diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d05a54..5371476 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,14 +1,15 @@ name: CI +# The compiler is written in Finch. It is built from bootstrap/.ll, its own LLVM IR (see bootstrap/README.md), +# then from itself. Linux x86-64 and ARM64 have seeds; macOS and Windows machines can't build the compiler yet +# (programs for them are built from Linux with --target, and tested here under Wine and qemu). + on: push: branches: [main, "ci/**"] tags: ["v*"] pull_request: -env: - LLVM_VERSION: 21.1.8 - jobs: linux: strategy: @@ -21,77 +22,57 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - name: Install LLVM 21, libclang, tools + - name: Install clang 21, libclang, tools run: | wget -q https://apt.llvm.org/llvm.sh sudo bash llvm.sh 21 - sudo apt-get install -y llvm-21-dev libclang-21-dev ninja-build valgrind + sudo apt-get install -y libclang-21-dev pkg-config valgrind echo "/usr/lib/llvm-21/bin" >> $GITHUB_PATH - - name: Build + - name: Build the compiler (seed, then itself, and the two must agree) run: | - cmake -S . -B build -G Ninja -DLLVM_DIR=/usr/lib/llvm-21/lib/cmake/llvm -DCMAKE_BUILD_TYPE=Release - ninja -C build + export FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" + bootstrap/build.sh build/finch version - - name: Tests + - name: Tests (programs, refusals, -g, a shared library, the language server) run: tests/run.sh - - name: Shared library - run: tests/shared.sh - name: Tests under valgrind if: matrix.arch == 'x64' run: MEMCHECK=1 tests/run.sh - - name: Self-hosting - run: tests/boot.sh - - name: Language server - run: python3 tests/lsp_test.py - name: Package run: | - mkdir -p dist/finch && cp build/finch README.md LICENSE dist/finch/ && cp -r examples dist/finch/ + mkdir -p dist/finch && cp build/finch README.md LICENSE dist/finch/ && cp -r runtime std examples dist/finch/ tar -czf finch-linux-${{ matrix.arch }}.tar.gz -C dist finch - uses: actions/upload-artifact@v4 with: name: finch-linux-${{ matrix.arch }} path: finch-linux-${{ matrix.arch }}.tar.gz - macos: - runs-on: macos-15 + cross: + name: programs for ${{ matrix.target }} + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + target: [windows, arm64] steps: - uses: actions/checkout@v4 - - name: Install LLVM 21 + - name: Install clang 21, libclang, cross compilers and emulators run: | - brew install llvm@21 ninja - echo "$(brew --prefix llvm@21)/bin" >> $GITHUB_PATH - - name: Build + wget -q https://apt.llvm.org/llvm.sh + sudo bash llvm.sh 21 + sudo apt-get install -y libclang-21-dev pkg-config gcc-mingw-w64-x86-64 wine64 gcc-aarch64-linux-gnu qemu-user libc6-arm64-cross + echo "/usr/lib/llvm-21/bin" >> $GITHUB_PATH + - name: Build the compiler run: | - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR="$(brew --prefix llvm@21)/lib/cmake/llvm" - ninja -C build - build/finch version - - name: Tests - run: CC=/usr/bin/clang tests/run.sh - - name: Self-hosting - run: CC=/usr/bin/clang tests/boot.sh - - name: Language server - run: python3 tests/lsp_test.py - - name: Apple frameworks + export FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" + bootstrap/build.sh + - name: Run every test on the other system run: | - cat > fw.fch <<'EOF' - import "CoreFoundation/CoreFoundation.h" - link "CoreFoundation.framework" - - fn main() { - print(CFAbsoluteTimeGetCurrent() > 0.0) - } - EOF - out=$(CC=/usr/bin/clang build/finch run fw.fch) - echo "$out" - test "$out" = "true" - - name: Package - run: | - mkdir -p dist/finch && cp build/finch README.md LICENSE dist/finch/ && cp -r examples dist/finch/ - tar -czf finch-macos-arm64.tar.gz -C dist finch - - uses: actions/upload-artifact@v4 - with: - name: finch-macos-arm64 - path: finch-macos-arm64.tar.gz + if [ "${{ matrix.target }}" = windows ]; then + FINCH_CC=x86_64-w64-mingw32-gcc tests/cross.sh windows + else + FINCH_CC=aarch64-linux-gnu-gcc QEMU_LD_PREFIX=/usr/aarch64-linux-gnu tests/cross.sh arm64 + fi vscode: runs-on: ubuntu-24.04 @@ -112,51 +93,3 @@ jobs: with: name: finch-vscode path: editors/vscode/finch-lang.vsix - - windows: - runs-on: windows-2022 - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - uses: ilammy/msvc-dev-cmd@v1 - - name: Cache LLVM - id: cache-llvm - uses: actions/cache@v4 - with: - path: C:/llvm - key: llvm-${{ env.LLVM_VERSION }}-x86_64-pc-windows-msvc - - name: Download LLVM ${{ env.LLVM_VERSION }} - if: steps.cache-llvm.outputs.cache-hit != 'true' - run: | - curl -sSL -o llvm.tar.xz "https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-pc-windows-msvc.tar.xz" - mkdir -p /c/llvm - tar -xf llvm.tar.xz -C /c/llvm --strip-components=1 - rm llvm.tar.xz - - name: Build finch.exe - run: | - echo "C:/llvm/bin" >> $GITHUB_PATH - export PATH="/c/llvm/bin:$PATH" - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR=C:/llvm/lib/cmake/llvm \ - -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl - ninja -C build - cp /c/llvm/bin/libclang.dll build/ - build/finch.exe version - - name: Tests - run: | - export PATH="/c/llvm/bin:$PATH" - tests/run.sh - - name: Language server - run: python tests/lsp_test.py - - name: Package - run: | - mkdir -p dist/finch - cp build/finch.exe build/libclang.dll dist/finch/ - cp README.md LICENSE dist/finch/ - cp -r examples dist/finch/ - cd dist && 7z a -tzip finch-windows-x64.zip finch > /dev/null - - uses: actions/upload-artifact@v4 - with: - name: finch-windows-x64 - path: dist/finch-windows-x64.zip diff --git a/README.md b/README.md index 5fd3219..f626514 100644 --- a/README.md +++ b/README.md @@ -48,38 +48,33 @@ fn main() { ``` - **Any C library, directly.** `import "raylib.h"` + `link "raylib"`, and you can call it, structs by value and callbacks included. Headers are read by libclang, so there is nothing to declare by hand. -- **Written in itself, too.** `boot/` is a Finch compiler written in Finch that compiles itself to a - byte-identical result. It handles the whole language except C import and `link` (sized numbers, - methods, `defer`, errors as values, maps and `for k, v` all work); `tests/boot.sh` shows what is left. +- **Written in itself.** The compiler is Finch code, and nothing else: `src/*.fch`, about 8.6k lines. It is built from a + seed (its own LLVM IR, `bootstrap/`) and then from itself, and the two come out identical. Its first version, in C++, + is kept on the `before-bootstrap` branch. ## Quick start -Ready builds are in the [releases](https://github.com/Nexoniarz/Finch/releases): - -| System | Download | Also needs | -|---|---|---| -| Windows x64 | `finch-windows-x64.zip` | LLVM 21, Visual Studio Build Tools (C++); [steps](docs/en/for-technicians.md#windows) | -| macOS (Apple Silicon) | `finch-macos-arm64.tar.gz` | `brew install llvm@21`; [steps](docs/en/for-technicians.md#macos) | -| Linux x64 / ARM64 | `finch-linux-x64.tar.gz` / `finch-linux-arm64.tar.gz` | LLVM 21 libraries, a C compiler; [steps](docs/en/for-technicians.md#linux) | - -Editors: **Kate** (`editors/kate/install.sh`), **VS Code** (the `finch-lang` `.vsix` from the release), or any -editor with LSP support (`finch lsp`). - -**Building it yourself** (Linux or macOS, LLVM 21): +**Building it** (Linux x86-64 or ARM64; needs `clang` and libclang, LLVM 21): ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # or install LLVM 21 + libclang + cmake + ninja yourself -cmake -S . -B build -G Ninja -ninja -C build +nix-shell # or install clang + libclang (LLVM 21) + pkg-config yourself +bootstrap/build.sh # the compiler is build/finch: built from the seed, then from itself ./build/finch run examples/hello.fch ./build/finch build examples/tour.fch -o tour && ./tour -tests/run.sh # 74 passed, 0 failed -tests/boot.sh # the compiler written in Finch builds itself +tests/run.sh # every program, every refusal, -g, a shared library, the language server ``` +Ready builds of the compiler are in the [releases](https://github.com/Nexoniarz/Finch/releases) (Linux x64 and ARM64: +unpack, keep `runtime/` and `std/` next to `finch`). **Programs for Windows, ARM64 and macOS** are built from Linux with +`--target windows|arm64|macos` (see the [guide](docs/en/for-technicians.md#3-the-finch-command)); the compiler itself does not run on +macOS or Windows yet (it needs a seed made with that system's headers: see [bootstrap/README.md](bootstrap/README.md)). + +Editors: **Kate** (`editors/kate/install.sh`), **VS Code** (the `finch-lang` `.vsix` from the release), or any +editor with LSP support (`finch lsp`). + ## Documentation Pick the guide that fits you: @@ -156,12 +151,14 @@ Pick the guide that fits you: ## Layout ``` -src/ compiler: lexer, parser, AST, codegen, C import + ABI, language server, driver (C++17, ~7k lines) +src/ the compiler, in Finch: lexer, parser, AST, code generation (to LLVM IR as text), C import (libclang) and + the C calling conventions, the language server, the driver +std/ the standard library, in Finch: json, path, time, proc runtime/ the small C runtime linked into every program -boot/ the Finch compiler written in Finch (~3k lines) +bootstrap/ build.sh and the seeds: the compiler's own LLVM IR, one per system examples/ example programs editors/ VS Code extension, Kate highlighting and LSP setup -tests/ run/ (golden output), fail/ (expected errors), run.sh, boot.sh, cross.sh, lsp_test.py +tests/ run/ new/ (golden output), fail/ new/fail/ (expected errors), run.sh, cross.sh, shared.sh, lsp_test.py docs/ en/ and pl/ guides for three audiences ``` diff --git a/README.pl.md b/README.pl.md index 90b9afd..9422f8a 100644 --- a/README.pl.md +++ b/README.pl.md @@ -48,37 +48,33 @@ fn main() { ``` - **Każda biblioteka C, bezpośrednio.** Piszesz `import "raylib.h"` i `link "raylib"`, i możesz z niej korzystać, także ze struktur przekazywanych przez wartość i z callbacków. Nagłówki czyta libclang, więc nie trzeba niczego deklarować ręcznie. -- **Napisany także w sobie.** `boot/` to kompilator Fincha napisany w Finchu, który kompiluje sam siebie - do identycznego co do bajtu wyniku. +- **Napisany w sobie.** Kompilator to kod w Finchu i nic więcej: `src/*.fch`, ok. 8,6 tys. linii. Buduje się go z ziarna + (własny kod LLVM IR, `bootstrap/`), potem z samego siebie, a oba wyniki są identyczne. Pierwsza wersja, w C++, + jest w gałęzi `before-bootstrap`. ## Szybki start -Gotowe wersje są w [wydaniach](https://github.com/Nexoniarz/Finch/releases): - -| System | Plik | Potrzebuje też | -|---|---|---| -| Windows x64 | `finch-windows-x64.zip` | LLVM 21, Visual Studio Build Tools (C++); [kroki](docs/pl/dla-technikow.md#windows) | -| macOS (Apple Silicon) | `finch-macos-arm64.tar.gz` | `brew install llvm@21`; [kroki](docs/pl/dla-technikow.md#macos) | -| Linux x64 / ARM64 | `finch-linux-x64.tar.gz` / `finch-linux-arm64.tar.gz` | biblioteki LLVM 21, kompilator C; [kroki](docs/pl/dla-technikow.md#linux) | - -Edytory: **Kate** (`editors/kate/install.sh`), **VS Code** (plik `.vsix` `finch-lang` z wydania) albo każdy -edytor obsługujący LSP (`finch lsp`). - -**Samodzielne budowanie** (Linux albo macOS, LLVM 21): +**Budowanie** (Linux x86-64 lub ARM64; potrzebny `clang` i libclang, LLVM 21): ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # albo zainstaluj samodzielnie LLVM 21 + libclang + cmake + ninja -cmake -S . -B build -G Ninja -ninja -C build +nix-shell # albo zainstaluj samodzielnie clang + libclang (LLVM 21) + pkg-config +bootstrap/build.sh # kompilator to build/finch: z ziarna, potem z samego siebie ./build/finch run examples/hello.fch ./build/finch build examples/tour.fch -o tour && ./tour -tests/run.sh # 74 passed, 0 failed -tests/boot.sh # kompilator napisany w Finchu buduje sam siebie +tests/run.sh # każdy program, każda odmowa, -g, biblioteka współdzielona, serwer języka ``` +Gotowe kompilatory są w [wydaniach](https://github.com/Nexoniarz/Finch/releases) (Linux x64 i ARM64: rozpakuj, zostaw +`runtime/` i `std/` obok `finch`). **Programy dla Windowsa, ARM64 i macOS** buduje się z Linuksa przez +`--target windows|arm64|macos`; sam kompilator nie działa jeszcze na macOS ani Windowsie (potrzebuje ziarna +zrobionego z nagłówkami tego systemu: patrz [bootstrap/README.md](bootstrap/README.md)). + +Edytory: **Kate** (`editors/kate/install.sh`), **VS Code** (plik `.vsix` `finch-lang` z wydania) albo dowolny +edytor z obsługą LSP (`finch lsp`). + ## Dokumentacja Wybierz przewodnik dla siebie: @@ -155,12 +151,14 @@ Wybierz przewodnik dla siebie: ## Struktura ``` -src/ kompilator: lekser, parser, AST, codegen, import C + ABI, serwer języka, sterownik (C++17, ok. 7 tys. linii) +src/ kompilator, w Finchu: lekser, parser, AST, generowanie kodu (do LLVM IR jako tekst), import C (libclang) + i konwencje wywołań C, serwer języka, sterownik +std/ biblioteka standardowa, w Finchu: json, path, time, proc runtime/ mały runtime w C dołączany do każdego programu -boot/ kompilator Fincha napisany w Finchu (ok. 3 tys. linii) +bootstrap/ build.sh i ziarna: własny LLVM IR kompilatora, po jednym na system examples/ przykładowe programy editors/ rozszerzenie VS Code, podświetlanie i konfiguracja LSP dla Kate -tests/ run/ (wzorcowe wyjście), fail/ (oczekiwane błędy), run.sh, boot.sh, cross.sh, lsp_test.py +tests/ run/ new/ (wzorcowe wyjście), fail/ new/fail/ (oczekiwane błędy), run.sh, cross.sh, shared.sh, lsp_test.py docs/ przewodniki en/ i pl/ dla trzech grup odbiorców ``` diff --git a/bootstrap/README.md b/bootstrap/README.md new file mode 100644 index 0000000..295bbdc --- /dev/null +++ b/bootstrap/README.md @@ -0,0 +1,39 @@ +# The seed + +Finch's compiler is written in Finch. To build it you need something that already runs Finch: the **seed**, which is +the compiler's own LLVM IR, one file per system: + +| File | System | Checked | +|---|---|---| +| `linux-x86_64.ll` | Linux x86-64 | built and tested here and in CI | +| `linux-aarch64.ll` | Linux ARM64 | made with the ARM64 cross compiler; CI builds and tests it on an ARM64 runner | + +`bootstrap/build.sh` compiles the seed with `clang` (and the runtime, and libclang) into `build/finch0`; `finch0` builds +`src/` into `finch1`; `finch1` builds `src/` again into `build/finch`; the two must make the same IR, or the script stops. + +## Why one per system + +The seed includes how this system's C compiler passes structs by value, because the compiler calls libclang with +`CXCursor`, `CXType` and `CXString` (the calling convention is different on x86-64, on ARM64 and on Windows). So a seed +made for one system doesn't run on another, and a seed needs the target system's C headers to be made. + +## When to make a new one + +When the compiler's own source starts to use a feature that the committed seed doesn't have, `build.sh` fails at the first +step. Make the seed from a working compiler: + +```sh +bootstrap/build.sh seed # writes bootstrap/.ll +``` + +For another system, from a machine that has that system's headers and a cross compiler (what `tests/cross.sh` uses): + +```sh +FINCH_CC=aarch64-linux-gnu-gcc build/finch ir src/main.fch --target arm64 > bootstrap/linux-aarch64.ll +``` + +## macOS and Windows + +There is no seed for them yet: it needs Apple's or Microsoft's headers, which can't be had on Linux. Until there is one, +programs for macOS and Windows are built from Linux with `--target macos|windows`, and the compiler's older C++ version +(branch `before-bootstrap`) is the way to get a compiler that runs there. diff --git a/bootstrap/install.sh b/bootstrap/install.sh new file mode 100755 index 0000000..6c14a4a --- /dev/null +++ b/bootstrap/install.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Installs the compiler you built (bootstrap/build.sh) under a prefix: +# bootstrap/install.sh /usr/local (needs sudo) +# bootstrap/install.sh ~/.local +# finch goes to /bin; the runtime and the standard library go to /share/finch, where finch looks for them. +set -eu +cd "$(dirname "$0")/.." +prefix=${1:-/usr/local} +[ -x build/finch ] || { echo "install: run bootstrap/build.sh first" >&2; exit 1; } +mkdir -p "$prefix/bin" "$prefix/share/finch" +cp build/finch "$prefix/bin/finch" +rm -rf "$prefix/share/finch/runtime" "$prefix/share/finch/std" +cp -r runtime std "$prefix/share/finch/" +echo "installed: $prefix/bin/finch ($("$prefix/bin/finch" version))" diff --git a/bootstrap/linux-aarch64.ll b/bootstrap/linux-aarch64.ll new file mode 100644 index 0000000..fd145aa --- /dev/null +++ b/bootstrap/linux-aarch64.ll @@ -0,0 +1,95038 @@ +; generated by the Finch compiler written in Finch + +target triple = "aarch64-unknown-linux-gnu" + +%S.main.Loader = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.lexer.Token = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1 } +%S.lexer.Lexer = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } +%S.ast.Type = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } +%S.ast.Node = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, 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.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.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.Saved = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i1, i64 } +%S.gen.SizeAlign = type { i64, i64 } +%S.gen.Fallible = type { %S.gen.Val, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.gen.Abi = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } +%S.gen.Leaf = type { i64, i64, i1, i1 } +%S.gen.Plan = type { %S.gen.Abi, { ptr, i64, i64 }, { ptr, i64, i64 }, i1 } +%S.docs.Doc = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.cimport.CFunc = type { { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, { ptr, i64, i64 } } +%S.cimport.CConst = type { i1, i64, double, { ptr, i64, i64 } } +%S.cimport.CField = type { { ptr, i64, i64 }, %S.ast.Type, i64, i64, i64, i1 } +%S.cimport.CStruct = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, i1 } +%S.cimport.Header = type { { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.cimport.Mapped = type { %S.ast.Type, { ptr, i64, i64 }, i1 } +%S.cimport.Importer = type { %S.cimport.CImports, ptr, { ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, i64 } +%S.cimport.FieldCtx = type { ptr, ptr } +%S.cimport.Number = type { %S.cimport.CConst, i1 } +%S.linker.Names = type { { ptr, i64, i64 } } +%S.linker.Build = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 } } +%S.lsp.Ref = type { { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.VarRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, i64, i64 } +%S.lsp.FnRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.lsp.StructRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.lsp.EnumRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.Diag = type { i1, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.Analysis = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.lsp.Diag } +%S.lsp.Server = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 }, i1 } +%S.lsp.Names = type { { ptr, i64, i64 } } +%S.json.Json = type { i32, i1, double, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.json.Writer = type { { ptr, i64, i64 } } +%S.json.Reader = type { { ptr, i64, i64 }, i64 } +%S.C.fd_set = type { [16 x i64] } +%S.C.timeval = type { i64, i64 } +%S.C.timespec = type { i64, i64 } +%S.C.sigset_t = type { [16 x i64] } +%S.C.random_data = type { ptr, ptr, ptr, i32, i32, i32, [4 x i8], ptr } +%S.C.drand48_data = type { [3 x i16], [3 x i16], i16, i16, i64 } +%S.C.div_t = type { i32, i32 } +%S.C.ldiv_t = type { i64, i64 } +%S.C.lldiv_t = type { i64, i64 } +%S.C.CXString = type { ptr, i32, [4 x i8] } +%S.C.CXStringSet = type { ptr, i32, [4 x i8] } +%S.C.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], i64, ptr } +%S.C.__locale_struct = type { [13 x ptr], ptr, ptr, ptr, [13 x ptr] } +%S.C.itimerspec = type { %S.C.timespec, %S.C.timespec } +%S.C.CXFileUniqueID = type { [3 x i64] } +%S.C.CXSourceLocation = type { [2 x ptr], i32, [4 x i8] } +%S.C.CXSourceRange = type { [2 x ptr], i32, i32 } +%S.C.CXSourceRangeList = type { i32, [4 x i8], ptr } +%S.C.CXIndexOptions = type { i32, i8, i8, [2 x i8], ptr, ptr } +%S.C.CXUnsavedFile = type { ptr, ptr, i64 } +%S.C.CXTUResourceUsageEntry = type { i32, [4 x i8], i64 } +%S.C.CXTUResourceUsage = type { ptr, i32, [4 x i8], ptr } +%S.C.CXCursor = type { i32, i32, [3 x ptr] } +%S.C.CXVersion = type { i32, i32, i32 } +%S.C.CXPlatformAvailability = type { %S.C.CXString, %S.C.CXVersion, %S.C.CXVersion, %S.C.CXVersion, i32, %S.C.CXString } +%S.C.CXType = type { i32, [4 x i8], [2 x ptr] } +%S.C.CXToken = type { [4 x i32], ptr } +%S.C.CXCompletionResult = type { i32, [4 x i8], ptr } +%S.C.CXCodeCompleteResults = type { ptr, i32, [4 x i8] } +%S.C.CXCursorAndRangeVisitor = type { ptr, ptr } +%S.C.CXIdxLoc = type { [2 x ptr], i32, [4 x i8] } +%S.C.CXIdxAttrInfo = type { i32, [4 x i8], %S.C.CXCursor, %S.C.CXIdxLoc } +%S.C.CXIdxEntityInfo = type { i32, i32, i32, [4 x i8], ptr, ptr, %S.C.CXCursor, ptr, i32, [4 x i8] } +%S.C.CXIdxContainerInfo = type { %S.C.CXCursor } +%S.C.CXIdxDeclInfo = type { ptr, %S.C.CXCursor, %S.C.CXIdxLoc, ptr, ptr, i32, i32, i32, [4 x i8], ptr, i32, [4 x i8], ptr, i32, i32 } +%S.C.CXIdxObjCContainerDeclInfo = type { ptr, i32, [4 x i8] } +%S.C.CXIdxBaseClassInfo = type { ptr, %S.C.CXCursor, %S.C.CXIdxLoc } +%S.C.CXIdxObjCProtocolRefInfo = type { ptr, %S.C.CXCursor, %S.C.CXIdxLoc } +%S.C.CXIdxObjCProtocolRefListInfo = type { ptr, i32, [4 x i8] } +%S.C.CXIdxObjCInterfaceDeclInfo = type { ptr, ptr, ptr } +%S.C.CXIdxObjCCategoryDeclInfo = type { ptr, ptr, %S.C.CXCursor, %S.C.CXIdxLoc, ptr } +%S.C.CXIdxObjCPropertyDeclInfo = type { ptr, ptr, ptr } +%S.C.CXIdxIBOutletCollectionAttrInfo = type { ptr, ptr, %S.C.CXCursor, %S.C.CXIdxLoc } +%S.C.CXIdxCXXClassDeclInfo = type { ptr, ptr, i32, [4 x i8] } +%S.C.IndexerCallbacks = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } +%S.C.FILE = type { i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, [3 x i8], [1 x i8], i64, i16, i8, [1 x i8], [4 x i8], ptr, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, [8 x i8] } +%S.C.cookie_io_functions_t = type { ptr, ptr, ptr, ptr } +%S.C.va_list = type { ptr, ptr, ptr, i32, i32 } +%S.C.__mbstate_t = type { i32, [4 x i8] } +%S.C.fpos_t = type { i64, %S.C.__mbstate_t } +@.str.1 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.2 = private unnamed_addr constant [2 x i8] c".\00" +@.str.3 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.4 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.5 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.7 = private unnamed_addr constant [3 x i8] c"./\00" +@.str.8 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.9 = private unnamed_addr constant [2 x i8] c".\00" +@.str.10 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.11 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.12 = private unnamed_addr constant [37 x i8] c"used .overlayPaths on a null pointer\00" +@.str.13 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.14 = private unnamed_addr constant [37 x i8] c"used .overlayFiles on a null pointer\00" +@.str.15 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.16 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.17 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.18 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.19 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.20 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.21 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.22 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.23 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.24 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.25 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.26 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.27 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.28 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.29 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.30 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.31 = private unnamed_addr constant [30 x i8] c"used .paths on a null pointer\00" +@.str.32 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.33 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.34 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.35 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.36 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.37 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.38 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.39 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.40 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.41 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.42 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.43 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.44 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.45 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.46 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.47 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.48 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.49 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.50 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.51 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.52 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.53 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.54 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.55 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.56 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.57 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.58 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.59 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.60 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.61 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.62 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.63 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.64 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.65 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.66 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.67 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.68 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.69 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.70 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.71 = private unnamed_addr constant [37 x i8] c"used .overlayPaths on a null pointer\00" +@.str.72 = private unnamed_addr constant [31 x i8] c"error: can't find the module '\00" +@.str.73 = private unnamed_addr constant [15 x i8] c"' (looked for \00" +@.str.74 = private unnamed_addr constant [2 x i8] c")\00" +@.str.75 = private unnamed_addr constant [1 x i8] c"\00" +@.str.76 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.77 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.78 = private unnamed_addr constant [20 x i8] c"error: can't open '\00" +@.str.79 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.80 = private unnamed_addr constant [1 x i8] c"\00" +@.str.81 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.82 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.83 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.84 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.85 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.86 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.87 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.88 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.89 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.90 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" +@.str.91 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.92 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" +@.str.93 = private unnamed_addr constant [42 x i8] c"Finch -- the compiler is written in Finch\00" +@.str.94 = private unnamed_addr constant [1 x i8] c"\00" +@.str.95 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.96 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.97 = private unnamed_addr constant [7 x i8] c"usage:\00" +@.str.98 = private unnamed_addr constant [1 x i8] c"\00" +@.str.99 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.100 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.101 = private unnamed_addr constant [61 x i8] c" finch run [args...] build and run a program\00" +@.str.102 = private unnamed_addr constant [1 x i8] c"\00" +@.str.103 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.104 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.105 = private unnamed_addr constant [53 x i8] c" finch build [-o name] build a program\00" +@.str.106 = private unnamed_addr constant [1 x i8] c"\00" +@.str.107 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.108 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.109 = private unnamed_addr constant [55 x i8] c" finch ir print the LLVM IR\00" +@.str.110 = private unnamed_addr constant [1 x i8] c"\00" +@.str.111 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.112 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.113 = private unnamed_addr constant [54 x i8] c" finch version show the version\00" +@.str.114 = private unnamed_addr constant [1 x i8] c"\00" +@.str.115 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.116 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.117 = private unnamed_addr constant [91 x i8] c" finch lsp the language server, for editors (VS Code, Kate, ...)\00" +@.str.118 = private unnamed_addr constant [1 x i8] c"\00" +@.str.119 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.120 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.121 = private unnamed_addr constant [9 x i8] c"options:\00" +@.str.122 = private unnamed_addr constant [1 x i8] c"\00" +@.str.123 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.124 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.125 = private unnamed_addr constant [54 x i8] c" -O0 no optimization (faster to build)\00" +@.str.126 = private unnamed_addr constant [1 x i8] c"\00" +@.str.127 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.128 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.129 = private unnamed_addr constant [77 x i8] c" -l link a library (the same as link \22lib\22 in the program)\00" +@.str.130 = private unnamed_addr constant [1 x i8] c"\00" +@.str.131 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.132 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.133 = private unnamed_addr constant [58 x i8] c" -I look for imported C headers there too\00" +@.str.134 = private unnamed_addr constant [1 x i8] c"\00" +@.str.135 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.136 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.137 = private unnamed_addr constant [67 x i8] c" -g debug info (for gdb and lldb; use -O0 with it)\00" +@.str.138 = private unnamed_addr constant [1 x i8] c"\00" +@.str.139 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.140 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.141 = private unnamed_addr constant [102 x i8] c" --target build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple\00" +@.str.142 = private unnamed_addr constant [1 x i8] c"\00" +@.str.143 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.144 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.145 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.146 = private unnamed_addr constant [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.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.156 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.157 = private unnamed_addr constant [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.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.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.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.212 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.214 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.216 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.217 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.218 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.219 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.220 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.221 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.222 = private unnamed_addr constant [1 x i8] c"\00" +@.str.223 = private unnamed_addr constant [1 x i8] c"\00" +@.str.224 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.225 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.226 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.227 = private unnamed_addr constant [4 x i8] c"PWD\00" +@.str.228 = private unnamed_addr constant [1 x i8] c"\00" +@.str.229 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.230 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.231 = private unnamed_addr constant [1 x i8] c"\00" +@.str.232 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.233 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.234 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" +@.str.235 = private unnamed_addr constant [1 x i8] c"\00" +@.str.236 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.237 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" +@.str.238 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.239 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.240 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.241 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.242 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00" +@.str.243 = private unnamed_addr constant [1 x i8] c"\00" +@.str.244 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.245 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.246 = private unnamed_addr constant [1 x i8] c"\00" +@.str.247 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.248 = private unnamed_addr constant [4 x i8] c" -g\00" +@.str.249 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.250 = private unnamed_addr constant [2 x i8] c" \00" +@.str.251 = private unnamed_addr constant [2 x i8] c" \00" +@.str.252 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.253 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.254 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.255 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.256 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.257 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.258 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.259 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.260 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.261 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.262 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.263 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.264 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.265 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.266 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.267 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.268 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.269 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.270 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.271 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.272 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.273 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.274 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.275 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.276 = private unnamed_addr constant [2 x i8] c":\00" +@.str.277 = private unnamed_addr constant [2 x i8] c":\00" +@.str.278 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.279 = private unnamed_addr constant [1 x i8] c"\00" +@.str.280 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.281 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.282 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.283 = private unnamed_addr constant [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.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.292 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.294 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.296 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.297 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.298 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.299 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.301 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" +@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.303 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.305 = private unnamed_addr constant [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.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.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.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.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.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.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.356 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.357 = private unnamed_addr constant [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 [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 [26 x i8] c"used .i on a null pointer\00" +@.str.365 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.366 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.367 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.369 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.371 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.375 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.376 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.377 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.378 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.383 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" +@.str.384 = private unnamed_addr constant [1 x i8] c"\00" +@.str.385 = private unnamed_addr constant [1 x i8] c"\00" +@.str.386 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.387 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.389 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.391 = private unnamed_addr constant [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.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.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.410 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.411 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.412 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.413 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.414 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.415 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.416 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.417 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.418 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.422 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.423 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.424 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.425 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.427 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.429 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.431 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.432 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.433 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.434 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.436 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.437 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.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.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.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.445 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.449 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.450 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.451 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.452 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.454 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.456 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.460 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.461 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.462 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.463 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.465 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.466 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.467 = private unnamed_addr constant [1 x i8] c"\00" +@.str.468 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.469 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.470 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" +@.str.471 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" +@.str.472 = private unnamed_addr constant [1 x i8] c"\00" +@.str.473 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" +@.str.474 = private unnamed_addr constant [1 x i8] c"\00" +@.str.475 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" +@.str.476 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" +@.str.477 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.479 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.480 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.481 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.482 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.483 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.484 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.485 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.486 = private unnamed_addr constant [1 x i8] c"\00" +@.str.487 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.488 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.490 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.491 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.492 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.493 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.494 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.495 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.496 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.497 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.498 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.499 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.500 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.501 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.502 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.503 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.504 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.505 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.506 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.507 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.508 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.509 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.510 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.511 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.512 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.513 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.514 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.516 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.517 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.518 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.520 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.521 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.522 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.523 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.524 = private unnamed_addr constant [2 x i8] c".\00" +@.str.525 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.526 = private unnamed_addr constant [8 x i8] c"nothing\00" +@.str.527 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.528 = private unnamed_addr constant [29 x i8] c"used .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.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.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.550 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.551 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.552 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.555 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.557 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.559 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.560 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.561 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.562 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.564 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.565 = private unnamed_addr constant [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.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.594 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.596 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.597 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.598 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.599 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.600 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.601 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.602 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.603 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.604 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.605 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.606 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.607 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.608 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.609 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.610 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.611 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.612 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.613 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.614 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.615 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.616 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" +@.str.617 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.618 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.619 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" +@.str.620 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.621 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.622 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.623 = private unnamed_addr constant [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.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.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.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.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.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.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.675 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.678 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.679 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.680 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.681 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.682 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.683 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.686 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.690 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.692 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.693 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.694 = private unnamed_addr constant [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.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.703 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.705 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.707 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.708 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.709 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.710 = private unnamed_addr constant [2 x i8] c".\00" +@.str.711 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.712 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.714 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.716 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.717 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.718 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.719 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.720 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.721 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" +@.str.722 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.723 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.724 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.725 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.726 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.727 = private unnamed_addr constant [2 x i8] c":\00" +@.str.728 = private unnamed_addr constant [2 x i8] c":\00" +@.str.729 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.730 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" +@.str.731 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.732 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.733 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" +@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.735 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.736 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.737 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.738 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.739 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.740 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.741 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.742 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.743 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.744 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.745 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.746 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" +@.str.747 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.748 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.749 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.750 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.751 = private unnamed_addr constant [7 x i8] c"'enum'\00" +@.str.752 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.753 = private unnamed_addr constant [13 x i8] c"an enum name\00" +@.str.754 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.755 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.756 = private unnamed_addr constant [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.824 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.825 = private unnamed_addr constant [16 x i8] c"a function name\00" +@.str.826 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.827 = private unnamed_addr constant [2 x i8] c".\00" +@.str.828 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.829 = private unnamed_addr constant [14 x i8] c"a method name\00" +@.str.830 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.831 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.832 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.833 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.834 = private unnamed_addr constant [2 x i8] c")\00" +@.str.835 = private unnamed_addr constant [6 x i8] c"param\00" +@.str.836 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.837 = private unnamed_addr constant [17 x i8] c"a parameter name\00" +@.str.838 = private unnamed_addr constant [2 x i8] c",\00" +@.str.839 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.840 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.841 = private unnamed_addr constant [2 x i8] c")\00" +@.str.842 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.843 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.844 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.845 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.846 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.847 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.848 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.849 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" +@.str.850 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.851 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.852 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.853 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.854 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.855 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.856 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.857 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.858 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.859 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.860 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" +@.str.861 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.862 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.863 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.864 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.865 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.866 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.867 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.868 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.869 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" +@.str.870 = private unnamed_addr constant [2 x i8] c",\00" +@.str.871 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.872 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" +@.str.873 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.874 = private unnamed_addr constant [5 x i8] c"'in'\00" +@.str.875 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.876 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" +@.str.877 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.878 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.879 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.880 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.881 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.882 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.883 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.884 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.885 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.886 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.887 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.888 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" +@.str.889 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.890 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.891 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.892 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.893 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.894 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" +@.str.895 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.896 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.897 = private unnamed_addr constant [16 x i8] c"a variable name\00" +@.str.898 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.899 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.900 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.901 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.902 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.903 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str.904 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str.905 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.906 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.907 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.908 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.909 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.910 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.911 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" +@.str.912 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.913 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.914 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.915 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.916 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.917 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.918 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.919 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" +@.str.920 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.921 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.922 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.923 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.924 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.925 = private unnamed_addr constant [5 x i8] c"'if'\00" +@.str.926 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.927 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.928 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.929 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.930 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.931 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.932 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.933 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.934 = private unnamed_addr constant [2 x i8] c">\00" +@.str.935 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.936 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.937 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.938 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.939 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.940 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.941 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.942 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.943 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.944 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.945 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.946 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.948 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.949 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.950 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.951 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.952 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.953 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.954 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.955 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.956 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.957 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.958 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.959 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.960 = private unnamed_addr constant [2 x i8] c")\00" +@.str.961 = private unnamed_addr constant [2 x i8] c")\00" +@.str.962 = private unnamed_addr constant [1 x i8] c"\00" +@.str.963 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.964 = private unnamed_addr constant [2 x i8] c":\00" +@.str.965 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.966 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" +@.str.967 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.968 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" +@.str.969 = private unnamed_addr constant [2 x i8] c",\00" +@.str.970 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.971 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.972 = private unnamed_addr constant [2 x i8] c")\00" +@.str.973 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.974 = private unnamed_addr constant [2 x i8] c".\00" +@.str.975 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.976 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.977 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" +@.str.978 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.979 = private unnamed_addr constant [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.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.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.1052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1053 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1055 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1056 = private unnamed_addr constant [4 x i8] c"@R\09\00" +@.str.1057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1058 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1060 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1061 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1062 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1063 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1064 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1065 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1066 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1068 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1070 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1071 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1072 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1073 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1074 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1075 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1076 = private unnamed_addr constant [6 x i8] c" -> !\00" +@.str.1077 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1078 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.1079 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1080 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1082 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1083 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.1084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1085 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1088 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.1089 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.1090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1091 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1094 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1095 = private unnamed_addr constant [4 x i8] c"@I\09\00" +@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1097 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1099 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1103 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1106 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1107 = private unnamed_addr constant [4 x i8] c"@F\09\00" +@.str.1108 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1109 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1110 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1112 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1114 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1115 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1116 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1117 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1118 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1119 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.1120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1121 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1123 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1127 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1128 = private unnamed_addr constant [4 x i8] c"@F\09\00" +@.str.1129 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1130 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1131 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1133 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1135 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1136 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1137 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1138 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1139 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1140 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1141 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1142 = private unnamed_addr constant [7 x i8] c"](...)\00" +@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1145 = private unnamed_addr constant [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.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.1157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1158 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1159 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1161 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1162 = private unnamed_addr constant [5 x i8] c"@SF\09\00" +@.str.1163 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1169 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1171 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1173 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1174 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1176 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1177 = private unnamed_addr constant [4 x i8] c"@E\09\00" +@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1181 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1184 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1186 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1187 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1188 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1190 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1192 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1194 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1195 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1196 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1197 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1198 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1200 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1202 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1203 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1204 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.1205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1206 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.1207 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1208 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1209 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1211 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1213 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1215 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1216 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1217 = private unnamed_addr constant [9 x i8] c", !dbg !\00" +@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1219 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1220 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1222 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1223 = private unnamed_addr constant [3 x i8] c"%t\00" +@.str.1224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1225 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1227 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1229 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1231 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1234 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1236 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1237 = private unnamed_addr constant [11 x i8] c"br label %\00" +@.str.1238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1239 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1240 = private unnamed_addr constant [7 x i8] c"br i1 \00" +@.str.1241 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1242 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1244 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1246 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1247 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1249 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1251 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1252 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1253 = private unnamed_addr constant [11 x i8] c" = alloca \00" +@.str.1254 = private unnamed_addr constant [11 x i8] c", align 16\00" +@.str.1255 = private unnamed_addr constant [9 x i8] c" = load \00" +@.str.1256 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1257 = private unnamed_addr constant [7 x i8] c"store \00" +@.str.1258 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1259 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1260 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.1261 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1262 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1263 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1264 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1265 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1266 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1267 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1268 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1269 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1270 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1271 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1272 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1273 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1274 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1275 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1276 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1277 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1278 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1279 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1282 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1284 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1287 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1290 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1292 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1295 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1298 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1300 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1303 = private unnamed_addr constant [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.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.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.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.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.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.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.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.1437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1439 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1440 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.1441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1442 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1443 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1445 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.1446 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" +@.str.1447 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str.1448 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1449 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" +@.str.1450 = private unnamed_addr constant [7 x i8] c"{ ptr \00" +@.str.1451 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1452 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" +@.str.1453 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1454 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str.1455 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str.1456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1457 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1459 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" +@.str.1460 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1461 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1462 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1463 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1465 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1466 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.1467 = private unnamed_addr constant [8 x i8] c"inrange\00" +@.str.1468 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" +@.str.1469 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1471 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1473 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" +@.str.1474 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1475 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1476 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1477 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1478 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1480 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1482 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1484 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1486 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1488 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1490 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1492 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1494 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1496 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1498 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1500 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1502 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.1503 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1505 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1506 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1507 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1509 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1510 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1511 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.1512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1513 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1515 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1517 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1519 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1521 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1522 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1523 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1524 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1525 = private unnamed_addr constant [7 x i8] c"n.cond\00" +@.str.1526 = private unnamed_addr constant [7 x i8] c"n.body\00" +@.str.1527 = private unnamed_addr constant [6 x i8] c"n.end\00" +@.str.1528 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1529 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.1530 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1531 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1533 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1534 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.1535 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1539 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1540 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.1541 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1542 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1543 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1544 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1545 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1546 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1547 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1548 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1549 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1550 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" +@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1552 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1554 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1555 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1557 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1558 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1559 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1560 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1561 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1562 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1563 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1564 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" +@.str.1565 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1566 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1567 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1569 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1570 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1571 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1573 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1574 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1575 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1577 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1578 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1579 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1580 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" +@.str.1581 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1583 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1585 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1586 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1587 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1588 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1589 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1590 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1591 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.1592 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1596 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1598 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1599 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1601 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1602 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" +@.str.1603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1604 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1605 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" +@.str.1606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1608 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1609 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1610 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" +@.str.1611 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1612 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1613 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" +@.str.1614 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1615 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1616 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1617 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1618 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1619 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1620 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1621 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1622 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1623 = private unnamed_addr constant [5 x i8] c"%lld\00" +@.str.1624 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1625 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1626 = private unnamed_addr constant [5 x i8] c"%llu\00" +@.str.1627 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1628 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1629 = private unnamed_addr constant [3 x i8] c"%g\00" +@.str.1630 = private unnamed_addr constant [8 x i8] c"double \00" +@.str.1631 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1632 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1633 = private unnamed_addr constant [9 x i8] c"sext i8 \00" +@.str.1634 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1635 = private unnamed_addr constant [5 x i8] c"'%c'\00" +@.str.1636 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1637 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.1638 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1639 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1640 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1641 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1642 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1643 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1644 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1645 = private unnamed_addr constant [3 x i8] c"%s\00" +@.str.1646 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.1647 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1648 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1649 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1650 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.1651 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1652 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" +@.str.1653 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1654 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1655 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1656 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1657 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1658 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1659 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1660 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1661 = private unnamed_addr constant [9 x i8] c"ptr.null\00" +@.str.1662 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" +@.str.1663 = private unnamed_addr constant [9 x i8] c"ptr.done\00" +@.str.1664 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1665 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1666 = private unnamed_addr constant [7 x i8] c"0x%llx\00" +@.str.1667 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1668 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.1669 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1670 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1671 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1672 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1676 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" +@.str.1677 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1678 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" +@.str.1679 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1680 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1681 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1682 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1683 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.1684 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" +@.str.1685 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1686 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1687 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1688 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" +@.str.1689 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1690 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1691 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1692 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" +@.str.1693 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.1694 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1695 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1696 = private unnamed_addr constant [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.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.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.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.1837 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1838 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1839 = private unnamed_addr constant [6 x i8] c"zext \00" +@.str.1840 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1841 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1842 = private unnamed_addr constant [7 x i8] c"fpext \00" +@.str.1843 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1844 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1845 = private unnamed_addr constant [9 x i8] c"fptrunc \00" +@.str.1846 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1847 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1848 = private unnamed_addr constant [8 x i8] c"sitofp \00" +@.str.1849 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1850 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1851 = private unnamed_addr constant [8 x i8] c"uitofp \00" +@.str.1852 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1853 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1854 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1855 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1856 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1857 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1858 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1859 = private unnamed_addr constant [12 x i8] c"the number \00" +@.str.1860 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" +@.str.1861 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1862 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.1863 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1864 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1865 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1866 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1867 = private unnamed_addr constant [10 x i8] c" must be \00" +@.str.1868 = private unnamed_addr constant [15 x i8] c", but this is \00" +@.str.1869 = private unnamed_addr constant [7 x i8] c" (use \00" +@.str.1870 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" +@.str.1871 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" +@.str.1872 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1873 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1874 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1875 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1876 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" +@.str.1877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1878 = private unnamed_addr constant [31 x i8] c"used .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.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.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.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.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.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1960 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1962 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1965 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.1966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1967 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1970 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1972 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1973 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.1974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1975 = private unnamed_addr constant [2 x i8] c"$\00" +@.str.1976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1977 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1979 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.1980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1981 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1982 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.1983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1985 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1986 = private unnamed_addr constant [4 x i8] c"@V\09\00" +@.str.1987 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1988 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1990 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1992 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1993 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1994 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1996 = private unnamed_addr constant [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.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.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2056 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2058 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2060 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.2061 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.2062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2064 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2066 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2069 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2071 = private unnamed_addr constant [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.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.2096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2098 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2100 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2103 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2107 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2109 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2110 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2111 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2113 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2115 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.2116 = private unnamed_addr constant [18 x i8] c" has the variant \00" +@.str.2117 = private unnamed_addr constant [7 x i8] c" twice\00" +@.str.2118 = private unnamed_addr constant [17 x i8] c"two variants of \00" +@.str.2119 = private unnamed_addr constant [18 x i8] c" have the number \00" +@.str.2120 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" +@.str.2121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2122 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.2123 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2124 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2126 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2127 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2129 = private unnamed_addr constant [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.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.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.2151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2152 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2153 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2154 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2155 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" +@.str.2156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2157 = private unnamed_addr constant [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.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.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.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.2210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2211 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2213 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2216 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2219 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2221 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2225 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2228 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2231 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2234 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2236 = private unnamed_addr constant [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.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.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.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2250 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2253 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2255 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2257 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2259 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2261 = private unnamed_addr constant [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.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.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.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.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.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.2301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2302 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2304 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2305 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2307 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2309 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2310 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2312 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2315 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2316 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2317 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2318 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2319 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2320 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2322 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2324 = private unnamed_addr constant [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.2327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2328 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2330 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2332 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2334 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2335 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2336 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2338 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2344 = private unnamed_addr constant [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.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.2354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2355 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2356 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2358 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2361 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" +@.str.2362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2364 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2366 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2367 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2368 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2371 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2372 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2377 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2378 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2380 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2381 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2383 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2385 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2388 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2391 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2392 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" +@.str.2393 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2394 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2395 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2396 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2398 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2399 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2401 = private unnamed_addr constant [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.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2417 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2419 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2421 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2423 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2425 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2429 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2431 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2432 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2433 = private unnamed_addr constant [7 x i8] c" x i8]\00" +@.str.2434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2435 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2438 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2441 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2444 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2446 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2447 = private unnamed_addr constant [7 x i8] c" x i8]\00" +@.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2449 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2451 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" +@.str.2452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2453 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2459 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2462 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2465 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2466 = private unnamed_addr constant [6 x i8] c"%S.C.\00" +@.str.2467 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2468 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2469 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2471 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2474 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2477 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2480 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2482 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2484 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2486 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2489 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2491 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2494 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2495 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2497 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2499 = private unnamed_addr constant [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.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.2504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2505 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2507 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2509 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2511 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2515 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2517 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2519 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2521 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2522 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" +@.str.2523 = private unnamed_addr constant [8 x i8] c"] or []\00" +@.str.2524 = private unnamed_addr constant [16 x i8] c" for that field\00" +@.str.2525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2526 = private unnamed_addr constant [32 x i8] c"used .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.2530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2531 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2534 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2535 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2537 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2540 = private unnamed_addr constant [32 x i8] c"used .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.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.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.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.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.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.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2564 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2566 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2567 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2568 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2570 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2572 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2573 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2574 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2576 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.2577 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2578 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2579 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2580 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2581 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2582 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2583 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2584 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2585 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2586 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2587 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2588 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2589 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2590 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2592 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2594 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2596 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" +@.str.2597 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2598 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2599 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2600 = private unnamed_addr constant [13 x i8] c", baseType: \00" +@.str.2601 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2602 = private unnamed_addr constant [11 x i8] c", offset: \00" +@.str.2603 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2604 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2605 = private unnamed_addr constant [10 x i8] c"\22, size: \00" +@.str.2606 = private unnamed_addr constant [13 x i8] c", encoding: \00" +@.str.2607 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2608 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2609 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2610 = private unnamed_addr constant [3 x i8] c"T:\00" +@.str.2611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2612 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2614 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2617 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2619 = private unnamed_addr constant [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.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.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.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.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.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.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.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.2750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2751 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" +@.str.2752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2753 = private unnamed_addr constant [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.2802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2803 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2805 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2806 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" +@.str.2807 = private unnamed_addr constant [13 x i8] c", metadata !\00" +@.str.2808 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" +@.str.2809 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" +@.str.2810 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" +@.str.2811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2812 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2813 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2814 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2816 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2818 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2819 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2821 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2824 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2826 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2828 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2830 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2832 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2834 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2836 = private unnamed_addr constant [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.2843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2844 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2845 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2847 = private unnamed_addr constant [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.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.2872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2873 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2874 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2875 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2877 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.2878 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2879 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2880 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2881 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2883 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2884 = private unnamed_addr constant [10 x i8] c"ptr %self\00" +@.str.2885 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2887 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2888 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2890 = private unnamed_addr constant [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.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.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2896 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2897 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2899 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2900 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2901 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2902 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2903 = private unnamed_addr constant [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.2906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2907 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str.2908 = private unnamed_addr constant [3 x i8] c"%p\00" +@.str.2909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2910 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2913 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2915 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2917 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2920 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2923 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2926 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2928 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2929 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2930 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2931 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" +@.str.2932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2933 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2935 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2936 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2938 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2939 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.2940 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.2941 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2942 = private unnamed_addr constant [8 x i8] c" !dbg !\00" +@.str.2943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2944 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2946 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.2947 = private unnamed_addr constant [17 x i8] c"define internal \00" +@.str.2948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2949 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2950 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2952 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2953 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.2954 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2955 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2956 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2958 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.2959 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2960 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2962 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.2963 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2964 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2966 = private unnamed_addr constant [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.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.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3004 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3005 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" +@.str.3006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3007 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3008 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" +@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3010 = private unnamed_addr constant [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.3013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3014 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3015 = private unnamed_addr constant [19 x i8] c"unknown statement \00" +@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3017 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3019 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" +@.str.3020 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3022 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" +@.str.3023 = private unnamed_addr constant [8 x i8] c" = null\00" +@.str.3024 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3027 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3028 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3030 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.3031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3033 = private unnamed_addr constant [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.3051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3052 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3053 = private unnamed_addr constant [12 x i8] c"a condition\00" +@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3055 = private unnamed_addr constant [5 x i8] c"then\00" +@.str.3056 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.3057 = private unnamed_addr constant [6 x i8] c"endif\00" +@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3060 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3063 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3064 = private unnamed_addr constant [11 x i8] c"while.cond\00" +@.str.3065 = private unnamed_addr constant [11 x i8] c"while.body\00" +@.str.3066 = private unnamed_addr constant [10 x i8] c"while.end\00" +@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3068 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3070 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3073 = private unnamed_addr constant [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.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.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3089 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3091 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3093 = private unnamed_addr constant [19 x i8] c"the end of a range\00" +@.str.3094 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3095 = private unnamed_addr constant [9 x i8] c"for.cond\00" +@.str.3096 = private unnamed_addr constant [9 x i8] c"for.body\00" +@.str.3097 = private unnamed_addr constant [9 x i8] c"for.step\00" +@.str.3098 = private unnamed_addr constant [8 x i8] c"for.end\00" +@.str.3099 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3100 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3101 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3103 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3108 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3110 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3111 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3112 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3113 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3114 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3119 = private unnamed_addr constant [4 x i8] c"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.3161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3165 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3167 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3168 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3169 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3170 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3171 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3173 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3174 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3175 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3176 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3177 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3179 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" +@.str.3180 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" +@.str.3181 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3182 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3186 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3187 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3188 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3189 = private unnamed_addr constant [10 x i8] c"each.cond\00" +@.str.3190 = private unnamed_addr constant [10 x i8] c"each.body\00" +@.str.3191 = private unnamed_addr constant [10 x i8] c"each.step\00" +@.str.3192 = private unnamed_addr constant [9 x i8] c"each.end\00" +@.str.3193 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3194 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.3195 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3196 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3197 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3198 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3199 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3200 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3201 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3202 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3204 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3206 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3207 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3210 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3212 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3213 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3214 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3215 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3216 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3218 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3219 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" +@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3221 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3223 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3225 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3226 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3227 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3229 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3230 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3232 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3233 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3234 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3236 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3237 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" +@.str.3238 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3239 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3241 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3243 = private unnamed_addr constant [18 x i8] c"the error message\00" +@.str.3244 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3246 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3247 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3248 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3250 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3251 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3252 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3254 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3256 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3257 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3259 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3261 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3262 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" +@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3264 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3265 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3267 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3268 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3269 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3271 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3274 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3275 = private unnamed_addr constant [15 x i8] c"' must return \00" +@.str.3276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3277 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3280 = private unnamed_addr constant [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.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.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.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.3358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3362 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3363 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" +@.str.3364 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3365 = private unnamed_addr constant [12 x i8] c"map.missing\00" +@.str.3366 = private unnamed_addr constant [10 x i8] c"map.found\00" +@.str.3367 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3368 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3369 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3370 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3371 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3372 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" +@.str.3373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3374 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.3375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3376 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3377 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3378 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3379 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3381 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3382 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3383 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" +@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3385 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3386 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3388 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3389 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3392 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3393 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3395 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" +@.str.3396 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3397 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3399 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" +@.str.3400 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3401 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3408 = private unnamed_addr constant [22 x i8] c"every key of this map\00" +@.str.3409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3411 = private unnamed_addr constant [24 x i8] c"every value of this map\00" +@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3415 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3416 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3417 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3418 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3421 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3422 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.3423 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3424 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3425 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3426 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3427 = private unnamed_addr constant [11 x i8] c"remove.hit\00" +@.str.3428 = private unnamed_addr constant [11 x i8] c"remove.end\00" +@.str.3429 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" +@.str.3430 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3431 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3432 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3433 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3434 = private unnamed_addr constant [10 x i8] c"get.found\00" +@.str.3435 = private unnamed_addr constant [12 x i8] c"get.missing\00" +@.str.3436 = private unnamed_addr constant [9 x i8] c"get.fend\00" +@.str.3437 = private unnamed_addr constant [9 x i8] c"get.mend\00" +@.str.3438 = private unnamed_addr constant [8 x i8] c"get.end\00" +@.str.3439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3441 = private unnamed_addr constant [12 x i8] c"the default\00" +@.str.3442 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3443 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3444 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3445 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3446 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3447 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3448 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.3449 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" +@.str.3450 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3451 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3452 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.3453 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3454 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3455 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3456 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3457 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3458 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3459 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3460 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3461 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3462 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.3463 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3464 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3465 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3466 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3467 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3468 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3469 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3470 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3471 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3472 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3473 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3475 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3476 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3477 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3478 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3479 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3480 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3481 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3482 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3483 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3484 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3485 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3486 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3487 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3488 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" +@.str.3489 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" +@.str.3490 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3491 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3493 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.3494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3495 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3496 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" +@.str.3497 = private unnamed_addr constant [11 x i8] c" (it has: \00" +@.str.3498 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3499 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3501 = private unnamed_addr constant [13 x i8] c"this pattern\00" +@.str.3502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3503 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3504 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3506 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" +@.str.3507 = private unnamed_addr constant [10 x i8] c"match.end\00" +@.str.3508 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3510 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" +@.str.3511 = private unnamed_addr constant [10 x i8] c"match.arm\00" +@.str.3512 = private unnamed_addr constant [11 x i8] c"match.next\00" +@.str.3513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3515 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3517 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" +@.str.3518 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3520 = private unnamed_addr constant [9 x i8] c"match.or\00" +@.str.3521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3522 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3523 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3524 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3525 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" +@.str.3526 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" +@.str.3527 = private unnamed_addr constant [11 x i8] c"match.from\00" +@.str.3528 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3530 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3531 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3533 = private unnamed_addr constant [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.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.3555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3556 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3558 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3559 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3560 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3561 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3562 = private unnamed_addr constant [81 x i8] c"only a function call can fail; 'or' and 'try' go after one, like int(text) or 0\00" +@.str.3563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3564 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3566 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3568 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3570 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3571 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3573 = private unnamed_addr constant [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.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.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3640 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" +@.str.3641 = private unnamed_addr constant [8 x i8] c"or.bend\00" +@.str.3642 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3643 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3644 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3645 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3646 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3647 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3648 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3649 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3650 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3651 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3653 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.3654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3655 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.3656 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3657 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3659 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3660 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3661 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3662 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3663 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3664 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3666 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3667 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3668 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3669 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3670 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3671 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3672 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.3673 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.3674 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3675 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.3676 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3677 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3678 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.3679 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3680 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3681 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3682 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3683 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3684 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3685 = private unnamed_addr constant [20 x i8] c"unknown expression \00" +@.str.3686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3687 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3688 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3690 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" +@.str.3691 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.3692 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.3693 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3694 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.3695 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" +@.str.3696 = private unnamed_addr constant [5 x i8] c"xor \00" +@.str.3697 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3698 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str.3699 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" +@.str.3700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3701 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3703 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3704 = private unnamed_addr constant [5 x i8] c"sub \00" +@.str.3705 = private unnamed_addr constant [5 x i8] c" 0, \00" +@.str.3706 = private unnamed_addr constant [6 x i8] c"fneg \00" +@.str.3707 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3708 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" +@.str.3709 = private unnamed_addr constant [12 x i8] c"can't use '\00" +@.str.3710 = private unnamed_addr constant [6 x i8] c"' on \00" +@.str.3711 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.3712 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3713 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3714 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3715 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" +@.str.3716 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3717 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3718 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3719 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3720 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" +@.str.3721 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" +@.str.3722 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3723 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3724 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.3725 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.3726 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3727 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" +@.str.3728 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3729 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3730 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3731 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3732 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" +@.str.3733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3734 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3736 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3738 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3740 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3742 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3744 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3746 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3748 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3750 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3752 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3753 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3754 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3756 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3758 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3760 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3762 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3764 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3765 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3766 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3768 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3770 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3772 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3774 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3776 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3777 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3778 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3779 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3780 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3782 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3784 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3786 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3788 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3790 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3792 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3794 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3796 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3798 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3800 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3801 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3802 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3804 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3806 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3808 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3809 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3811 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3813 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3815 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3817 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3819 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3820 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3822 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3824 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3826 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3828 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3829 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3831 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3832 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3833 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3834 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3835 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3836 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3837 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3839 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3840 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3842 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3844 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3845 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3846 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3848 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3849 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3850 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3851 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3852 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3853 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" +@.str.3854 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3855 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3856 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3857 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3858 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3859 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3860 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3861 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.3862 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3863 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3864 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3865 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3866 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.3867 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.3868 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3869 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.3870 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.3871 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.3872 = private unnamed_addr constant [5 x i8] c"sdiv\00" +@.str.3873 = private unnamed_addr constant [5 x i8] c"srem\00" +@.str.3874 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.3875 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3876 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.3877 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.3878 = private unnamed_addr constant [5 x i8] c"ashr\00" +@.str.3879 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.3880 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.3881 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.3882 = private unnamed_addr constant [5 x i8] c"udiv\00" +@.str.3883 = private unnamed_addr constant [5 x i8] c"urem\00" +@.str.3884 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.3885 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3886 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.3887 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.3888 = private unnamed_addr constant [5 x i8] c"lshr\00" +@.str.3889 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3890 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3891 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3892 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.3893 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str.3894 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3895 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3896 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.3897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3898 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3899 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3900 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3901 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3902 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3903 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.3904 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3905 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3906 = private unnamed_addr constant [5 x i8] c"fadd\00" +@.str.3907 = private unnamed_addr constant [5 x i8] c"fsub\00" +@.str.3908 = private unnamed_addr constant [5 x i8] c"fmul\00" +@.str.3909 = private unnamed_addr constant [5 x i8] c"fdiv\00" +@.str.3910 = private unnamed_addr constant [5 x i8] c"frem\00" +@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3912 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3913 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3914 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3915 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3916 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3917 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3918 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3919 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3920 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3921 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3922 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3923 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" +@.str.3924 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3925 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3926 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3927 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3928 = private unnamed_addr constant [6 x i8] c" ptr \00" +@.str.3929 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3930 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3932 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3933 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" +@.str.3934 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3935 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3936 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3937 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3938 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3939 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3940 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.3941 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3942 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3943 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" +@.str.3944 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3945 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3946 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3947 = private unnamed_addr constant [6 x i8] c" i64 \00" +@.str.3948 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3949 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3950 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3951 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3952 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.3953 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.3954 = private unnamed_addr constant [2 x i8] c">\00" +@.str.3955 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.3956 = private unnamed_addr constant [4 x i8] c"oeq\00" +@.str.3957 = private unnamed_addr constant [4 x i8] c"une\00" +@.str.3958 = private unnamed_addr constant [4 x i8] c"olt\00" +@.str.3959 = private unnamed_addr constant [4 x i8] c"ole\00" +@.str.3960 = private unnamed_addr constant [4 x i8] c"ogt\00" +@.str.3961 = private unnamed_addr constant [4 x i8] c"oge\00" +@.str.3962 = private unnamed_addr constant [6 x i8] c"fcmp \00" +@.str.3963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3964 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3965 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3966 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3967 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3968 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3969 = private unnamed_addr constant [116 x i8] c"enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))\00" +@.str.3970 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3971 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3972 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3973 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3974 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.3975 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3976 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3977 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3978 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3979 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3980 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3981 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3982 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3983 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3984 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3985 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3986 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3987 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.3988 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.3989 = private unnamed_addr constant [2 x i8] c">\00" +@.str.3990 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.3991 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3992 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3993 = private unnamed_addr constant [4 x i8] c"ult\00" +@.str.3994 = private unnamed_addr constant [4 x i8] c"ule\00" +@.str.3995 = private unnamed_addr constant [4 x i8] c"ugt\00" +@.str.3996 = private unnamed_addr constant [4 x i8] c"uge\00" +@.str.3997 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3998 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3999 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str.4000 = private unnamed_addr constant [4 x i8] c"sle\00" +@.str.4001 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str.4002 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str.4003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4004 = private unnamed_addr constant [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.4129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4130 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4132 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.4133 = private unnamed_addr constant [18 x i8] c" has no variant '\00" +@.str.4134 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4135 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4136 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4137 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4138 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4139 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.4140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4141 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4142 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4144 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4146 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" +@.str.4147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4148 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4149 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4150 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4151 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.4152 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.4153 = private unnamed_addr constant [7 x i8] c"used .\00" +@.str.4154 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" +@.str.4155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4156 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4158 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4160 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4161 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4162 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4163 = private unnamed_addr constant [3 x i8] c"a \00" +@.str.4164 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" +@.str.4165 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4166 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4167 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" +@.str.4168 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4169 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4170 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4171 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" +@.str.4172 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4173 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" +@.str.4174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4175 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4176 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4177 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4178 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" +@.str.4179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4180 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4181 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" +@.str.4182 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4183 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4184 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4185 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4187 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4188 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4189 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4190 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4191 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" +@.str.4192 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4193 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" +@.str.4194 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4195 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4196 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.4197 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4198 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4199 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4200 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4201 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4202 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4203 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4204 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" +@.str.4205 = private unnamed_addr constant [3 x i8] c"')\00" +@.str.4206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4207 = private unnamed_addr constant [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.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.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.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.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.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.4464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4465 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4467 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4468 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4469 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" +@.str.4470 = private unnamed_addr constant [21 x i8] c", which C can't take\00" +@.str.4471 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4472 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4473 = private unnamed_addr constant [13 x i8] c" the struct \00" +@.str.4474 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" +@.str.4475 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4476 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4477 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4478 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" +@.str.4479 = private unnamed_addr constant [75 x i8] c"an export fn can't fail (C has no errors as values): handle them inside it\00" +@.str.4480 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" +@.str.4481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4482 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4483 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" +@.str.4484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4485 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" +@.str.4486 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4487 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" +@.str.4488 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4490 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4491 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4492 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" +@.str.4493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4494 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4495 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" +@.str.4496 = private unnamed_addr constant [4 x i8] c"i1 \00" +@.str.4497 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" +@.str.4498 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4499 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4500 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4501 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4502 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4503 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4504 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4505 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4506 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4507 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4508 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4509 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4510 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4511 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4512 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4513 = private unnamed_addr constant [8 x i8] c"ret i8 \00" +@.str.4514 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4515 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str.4516 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4517 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4518 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4520 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4521 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.4522 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.4523 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4524 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4525 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4526 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4527 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4531 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" +@.str.4532 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4534 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4535 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4537 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4538 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4539 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4540 = private unnamed_addr constant [82 x i8] c") gives C a function pointer, so it can't be a method or a function that can fail\00" +@.str.4541 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4542 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4543 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4544 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4546 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4548 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4549 = private unnamed_addr constant [96 x i8] c") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not \00" +@.str.4550 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4551 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4552 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4553 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4554 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4556 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4558 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4559 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" +@.str.4560 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4561 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4562 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" +@.str.4563 = private unnamed_addr constant [4 x i8] c"%c0\00" +@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4566 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4567 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4568 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4569 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4570 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4571 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4572 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4573 = private unnamed_addr constant [7 x i8] c"ptr %c\00" +@.str.4574 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4575 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4576 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4577 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4579 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4581 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4582 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4583 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4584 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4585 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4586 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4587 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4588 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4589 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4590 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4591 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4592 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4593 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4594 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4595 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4596 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4597 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4598 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4599 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4600 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4601 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4602 = private unnamed_addr constant [16 x i8] c"define internal\00" +@.str.4603 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4604 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4605 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4606 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4607 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4609 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4613 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" +@.str.4614 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4617 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" +@.str.4618 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4619 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4620 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.4621 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4623 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.4624 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4625 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.4626 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.4627 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" +@.str.4628 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.4629 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4630 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4631 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4632 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4634 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4635 = private unnamed_addr constant [9 x i8] c" signext\00" +@.str.4636 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4637 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4638 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4639 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4640 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4642 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4643 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4644 = private unnamed_addr constant [18 x i8] c"C function from `\00" +@.str.4645 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" +@.str.4646 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4647 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4648 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4649 = private unnamed_addr constant [6 x i8] c")\0A```\00" +@.str.4650 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4651 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4652 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" +@.str.4653 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4654 = private unnamed_addr constant [18 x i8] c"' takes at least \00" +@.str.4655 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4656 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4657 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4658 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4659 = private unnamed_addr constant [8 x i8] c"returns\00" +@.str.4660 = private unnamed_addr constant [6 x i8] c"takes\00" +@.str.4661 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4662 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4663 = private unnamed_addr constant [11 x i8] c") align 16\00" +@.str.4664 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4665 = private unnamed_addr constant [12 x i8] c") align 16 \00" +@.str.4666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4667 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4670 = private unnamed_addr constant [10 x i8] c"argument \00" +@.str.4671 = private unnamed_addr constant [5 x i8] c" of \00" +@.str.4672 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4673 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4674 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4675 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4676 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4677 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4678 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4679 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4680 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4681 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4682 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4683 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4686 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4687 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4688 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4689 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4691 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4693 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" +@.str.4694 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4695 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4697 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" +@.str.4698 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4699 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4700 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4701 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4702 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4703 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4704 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4705 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4706 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4707 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4708 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4709 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4710 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4711 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4712 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4713 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4714 = private unnamed_addr constant [6 x i8] c", ...\00" +@.str.4715 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4716 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4717 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4718 = private unnamed_addr constant [3 x i8] c"f:\00" +@.str.4719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4720 = private unnamed_addr constant [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.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.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.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.5007 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5008 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5010 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.5011 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5012 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5014 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5016 = private unnamed_addr constant [120 x i8] c"free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block\00" +@.str.5017 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" +@.str.5018 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5019 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5020 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5021 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5022 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5023 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" +@.str.5024 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5025 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5027 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5028 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5030 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5031 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5032 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5033 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" +@.str.5034 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.5035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5036 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5038 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5040 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5043 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5045 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5048 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" +@.str.5049 = private unnamed_addr constant [4 x i8] c" { \00" +@.str.5050 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5051 = private unnamed_addr constant [7 x i8] c" }\0A```\00" +@.str.5052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5053 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5056 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5058 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5060 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5062 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.5063 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5064 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" +@.str.5065 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" +@.str.5066 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5068 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5070 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5071 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" +@.str.5072 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.5073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5076 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.5077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5078 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5081 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5083 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5084 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5085 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" +@.str.5086 = private unnamed_addr constant [20 x i8] c"(...) or , \00" +@.str.5087 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" +@.str.5088 = private unnamed_addr constant [6 x i8] c"(...)\00" +@.str.5089 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5090 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5091 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5092 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5093 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5094 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5095 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5096 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5097 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.5098 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.5099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5100 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5101 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5102 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5103 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5105 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5106 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5107 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5108 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5109 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5110 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5112 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5115 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5118 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5122 = private unnamed_addr constant [70 x i8] c"give either all fields by name (x: 1, y: 2) or none (1, 2), not a mix\00" +@.str.5123 = private unnamed_addr constant [6 x i8] c" has \00" +@.str.5124 = private unnamed_addr constant [18 x i8] c" fields, but got \00" +@.str.5125 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" +@.str.5126 = private unnamed_addr constant [16 x i8] c"(field: value))\00" +@.str.5127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5130 = private unnamed_addr constant [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.5139 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5146 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5148 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5151 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5153 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5155 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5157 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5159 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5161 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5163 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5165 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5170 = private unnamed_addr constant [17 x i8] c"the default of '\00" +@.str.5171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5172 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5174 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5176 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5178 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5180 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5181 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.5182 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5183 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5184 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5185 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5188 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5189 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5191 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5192 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" +@.str.5193 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" +@.str.5194 = private unnamed_addr constant [14 x i8] c" at the top)\00" +@.str.5195 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5196 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5197 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5198 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5199 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5201 = private unnamed_addr constant [13 x i8] c"the module '\00" +@.str.5202 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" +@.str.5203 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5204 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5205 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5206 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5207 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5208 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5209 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5210 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5211 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5212 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5213 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5214 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" +@.str.5215 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5216 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5217 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5218 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5219 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" +@.str.5220 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5221 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5223 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5224 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5225 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5226 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5227 = private unnamed_addr constant [9 x i8] c"called .\00" +@.str.5228 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" +@.str.5229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5230 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5231 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5232 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5233 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5234 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5236 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5239 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5242 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5245 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5246 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5247 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5248 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" +@.str.5249 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5250 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" +@.str.5251 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5252 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5253 = private unnamed_addr constant [17 x i8] c" has no method '\00" +@.str.5254 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.5255 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5256 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5258 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5260 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5261 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5262 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" +@.str.5263 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" +@.str.5264 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.5265 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.5266 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5267 = private unnamed_addr constant [16 x i8] c" has no methods\00" +@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5269 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5270 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5271 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5274 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5275 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5276 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5277 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5278 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" +@.str.5279 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5280 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5281 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5282 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5283 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5285 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5286 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5287 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5288 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5289 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5290 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.5291 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5292 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.5293 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5294 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5295 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5296 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5297 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5298 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5299 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5300 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5301 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5302 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5303 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5304 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5305 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5308 = private unnamed_addr constant [22 x i8] c"the value to look for\00" +@.str.5309 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5310 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5311 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str.5312 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5313 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5314 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5315 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5316 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5317 = private unnamed_addr constant [10 x i8] c"find.cond\00" +@.str.5318 = private unnamed_addr constant [10 x i8] c"find.body\00" +@.str.5319 = private unnamed_addr constant [9 x i8] c"find.hit\00" +@.str.5320 = private unnamed_addr constant [10 x i8] c"find.next\00" +@.str.5321 = private unnamed_addr constant [9 x i8] c"find.end\00" +@.str.5322 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5323 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5324 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5325 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5326 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5327 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5328 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.5329 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5330 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5331 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5332 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5333 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5334 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5335 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5336 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5337 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5338 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5339 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5340 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5341 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" +@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5343 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5344 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" +@.str.5345 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5346 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5347 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5348 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5349 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5350 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5352 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5354 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5357 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5359 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5361 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" +@.str.5362 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5363 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5364 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5365 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5366 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5367 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5368 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5370 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5371 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5372 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5376 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5377 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5378 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5379 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5380 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5381 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5382 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" +@.str.5383 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5384 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5385 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5386 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5388 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5390 = private unnamed_addr constant [15 x i8] c"the new length\00" +@.str.5391 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" +@.str.5392 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5393 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5394 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5395 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5396 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5397 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5398 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5399 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str.5400 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5402 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5403 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5405 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5406 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5407 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5408 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5410 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5411 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5412 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5413 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5414 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5416 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5418 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5420 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5422 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5423 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5424 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5425 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5426 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5427 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5428 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5429 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5430 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5431 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5432 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5433 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5434 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" +@.str.5435 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5436 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5437 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5438 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.5439 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5440 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5441 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5442 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5443 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5444 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5445 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5446 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5448 = private unnamed_addr constant [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.5562 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5563 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5564 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5565 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5566 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5568 = private unnamed_addr constant [20 x i8] c"the text to replace\00" +@.str.5569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5570 = private unnamed_addr constant [13 x i8] c"the new text\00" +@.str.5571 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" +@.str.5572 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5573 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5574 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5575 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5576 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5577 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5578 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5580 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5581 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" +@.str.5582 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5583 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5584 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5585 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5586 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5587 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5589 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5591 = private unnamed_addr constant [10 x i8] c"the count\00" +@.str.5592 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" +@.str.5593 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5594 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5595 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5596 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5597 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5598 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5599 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" +@.str.5600 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5601 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5602 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5603 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5604 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" +@.str.5605 = private unnamed_addr constant [107 x i8] c"' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)\00" +@.str.5606 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" +@.str.5607 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" +@.str.5608 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" +@.str.5609 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" +@.str.5610 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" +@.str.5611 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" +@.str.5612 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" +@.str.5613 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" +@.str.5614 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" +@.str.5615 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" +@.str.5616 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" +@.str.5617 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" +@.str.5618 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" +@.str.5619 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" +@.str.5620 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" +@.str.5621 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" +@.str.5622 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" +@.str.5623 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" +@.str.5624 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" +@.str.5625 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" +@.str.5626 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" +@.str.5627 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" +@.str.5628 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" +@.str.5629 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" +@.str.5630 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" +@.str.5631 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" +@.str.5632 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" +@.str.5633 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" +@.str.5634 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" +@.str.5635 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" +@.str.5636 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" +@.str.5637 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" +@.str.5638 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" +@.str.5639 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" +@.str.5640 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" +@.str.5641 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" +@.str.5642 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" +@.str.5643 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" +@.str.5644 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" +@.str.5645 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" +@.str.5646 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" +@.str.5647 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" +@.str.5648 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" +@.str.5649 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" +@.str.5650 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" +@.str.5651 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" +@.str.5652 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" +@.str.5653 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" +@.str.5654 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" +@.str.5655 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" +@.str.5656 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" +@.str.5657 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" +@.str.5658 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" +@.str.5659 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" +@.str.5660 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" +@.str.5661 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" +@.str.5662 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" +@.str.5663 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" +@.str.5664 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" +@.str.5665 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" +@.str.5666 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" +@.str.5667 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" +@.str.5668 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" +@.str.5669 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" +@.str.5670 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" +@.str.5671 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" +@.str.5672 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" +@.str.5673 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" +@.str.5674 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" +@.str.5675 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" +@.str.5676 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" +@.str.5677 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5678 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5679 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" +@.str.5680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5681 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5682 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" +@.str.5683 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5684 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5685 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" +@.str.5686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5687 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.5688 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5689 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" +@.str.5690 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5691 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5692 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5693 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" +@.str.5694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5695 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5696 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5698 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5699 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5701 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5703 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5704 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5706 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5707 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" +@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5709 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5710 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" +@.str.5711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5712 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5713 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" +@.str.5714 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" +@.str.5715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5716 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" +@.str.5717 = private unnamed_addr constant [3 x i8] c"\22)\00" +@.str.5718 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" +@.str.5719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5720 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5722 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" +@.str.5723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5724 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5725 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5726 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5727 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5729 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5731 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5735 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5736 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5738 = private unnamed_addr constant [83 x i8] c"a library (--shared) has no main: the program that loads it calls its 'export fn's\00" +@.str.5739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5740 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" +@.str.5741 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5742 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.5743 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5745 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5746 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5747 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5749 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5752 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.5753 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5755 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5756 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5758 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5759 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.5760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5761 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5762 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.5763 = private unnamed_addr constant [108 x i8] c" void @finch_module_on_fatal(ptr %handler) {\0Aentry:\0A call void @finch_on_fatal(ptr %handler)\0A ret void\0A}\0A\00" +@.str.5764 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5765 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5766 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5767 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5768 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5769 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5770 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5771 = private unnamed_addr constant [134 x i8] c" %args = alloca { ptr, i64, i64 }\0A call void @finch_args(ptr %args, i32 %argc, ptr %argv)\0A %a = load { ptr, i64, i64 }, ptr %args\0A\00" +@.str.5772 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" +@.str.5773 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5774 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str.5775 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5776 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5777 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5778 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5779 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" +@.str.5780 = private unnamed_addr constant [63 x i8] c" %r, 0\0A br i1 %ok, label %main.ok, label %main.bad\0Amain.bad:\0A\00" +@.str.5781 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" +@.str.5782 = private unnamed_addr constant [79 x i8] c" %r, 2\0A %mp = alloca { ptr, i64, i64 }\0A store { ptr, i64, i64 } %m, ptr %mp\0A\00" +@.str.5783 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" +@.str.5784 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5785 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" +@.str.5786 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" +@.str.5787 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5788 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5789 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" +@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5791 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5792 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str.5793 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5794 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5795 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str.5796 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.5797 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" +@.str.5798 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" +@.str.5799 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.5800 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" +@.str.5801 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" +@.str.5802 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.5803 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" +@.str.5804 = private unnamed_addr constant [122 x i8] c"The whole file as text. Stops the program if it can't be read, unless handled: read_file(p) or { ... }, try read_file(p).\00" +@.str.5805 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.5806 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" +@.str.5807 = private unnamed_addr constant [84 x i8] c"Writes (replaces) the file. true if it worked; with or / try, the reason it didn't.\00" +@.str.5808 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.5809 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" +@.str.5810 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" +@.str.5811 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.5812 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" +@.str.5813 = private unnamed_addr constant [74 x i8] c"Deletes the file. true if it worked; with or / try, the reason it didn't.\00" +@.str.5814 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.5815 = private unnamed_addr constant [19 x i8] c"error(str message)\00" +@.str.5816 = private unnamed_addr constant [99 x i8] c"The failure a fallible function returns: return error(\22...\22). The caller handles it with or / try.\00" +@.str.5817 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.5818 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" +@.str.5819 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" +@.str.5820 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.5821 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" +@.str.5822 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" +@.str.5823 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.5824 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" +@.str.5825 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" +@.str.5826 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5827 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" +@.str.5828 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" +@.str.5829 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5830 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" +@.str.5831 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" +@.str.5832 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5833 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" +@.str.5834 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" +@.str.5835 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5836 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" +@.str.5837 = private unnamed_addr constant [131 x i8] c"Converts to a whole number: cuts off fractions, parses text (stops the program if it isn't a number, unless handled: int(s) or 0).\00" +@.str.5838 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5839 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" +@.str.5840 = private unnamed_addr constant [76 x i8] c"Converts to a decimal number; parses text (int(s) or 0.0 handles bad text).\00" +@.str.5841 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5842 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" +@.str.5843 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" +@.str.5844 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5845 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" +@.str.5846 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" +@.str.5847 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5848 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" +@.str.5849 = private unnamed_addr constant [89 x i8] c"An untyped pointer: from a typed pointer, or from a number (an address or offset for C).\00" +@.str.5850 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5851 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5852 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" +@.str.5853 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5854 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" +@.str.5855 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" +@.str.5856 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5857 = private unnamed_addr constant [10 x i8] c"push(T x)\00" +@.str.5858 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" +@.str.5859 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5860 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" +@.str.5861 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" +@.str.5862 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5863 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" +@.str.5864 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" +@.str.5865 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5866 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" +@.str.5867 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" +@.str.5868 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5869 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.5870 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.5871 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5872 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" +@.str.5873 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" +@.str.5874 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5875 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" +@.str.5876 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" +@.str.5877 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5878 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" +@.str.5879 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" +@.str.5880 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5881 = private unnamed_addr constant [7 x i8] c"sort()\00" +@.str.5882 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" +@.str.5883 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5884 = private unnamed_addr constant [10 x i8] c"reverse()\00" +@.str.5885 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" +@.str.5886 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5887 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" +@.str.5888 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" +@.str.5889 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5890 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" +@.str.5891 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" +@.str.5892 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5893 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5894 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" +@.str.5895 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5896 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" +@.str.5897 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" +@.str.5898 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.5899 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" +@.str.5900 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" +@.str.5901 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5902 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" +@.str.5903 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" +@.str.5904 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5905 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" +@.str.5906 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" +@.str.5907 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.5908 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" +@.str.5909 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" +@.str.5910 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5911 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" +@.str.5912 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" +@.str.5913 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5914 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" +@.str.5915 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" +@.str.5916 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.5917 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" +@.str.5918 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" +@.str.5919 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.5920 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" +@.str.5921 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" +@.str.5922 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.5923 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" +@.str.5924 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" +@.str.5925 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5926 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" +@.str.5927 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" +@.str.5928 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5929 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" +@.str.5930 = private unnamed_addr constant [18 x i8] c"The text n times.\00" +@.str.5931 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5932 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" +@.str.5933 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" +@.str.5934 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5935 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5936 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" +@.str.5937 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.5938 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" +@.str.5939 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" +@.str.5940 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.5941 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" +@.str.5942 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" +@.str.5943 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5944 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" +@.str.5945 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" +@.str.5946 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5947 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.5948 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.5949 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.5950 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" +@.str.5951 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" +@.str.5952 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.5953 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" +@.str.5954 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" +@.str.5955 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.5956 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.5957 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.5958 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.5959 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.5960 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.5961 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.5962 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.5963 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.5964 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.5965 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.5966 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.5967 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.5968 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.5969 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5970 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5971 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.5972 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.5973 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.5974 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.5975 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.5976 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.5977 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5978 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5980 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5981 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5982 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5983 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5984 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.5985 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.5986 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.5987 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5988 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5989 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.5990 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.5991 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.5992 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.5993 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.5994 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.5995 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" +declare ptr @clang_getCString([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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +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.6436 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6437 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6438 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6439 = private unnamed_addr constant [4 x i8] c".ll\00" +@.str.6440 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6441 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6442 = private unnamed_addr constant [11 x i8] c" --target=\00" +@.str.6443 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6444 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6445 = private unnamed_addr constant [8 x i8] c" -w -c \00" +@.str.6446 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6447 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6448 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6449 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6450 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6451 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6452 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6453 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6454 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" +@.str.6455 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6456 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6457 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6458 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6459 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6460 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6461 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6462 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6463 = private unnamed_addr constant [5 x i8] c" -lm\00" +@.str.6464 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" +@.str.6465 = private unnamed_addr constant [9 x i8] c" -shared\00" +@.str.6466 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6467 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6468 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6469 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6470 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6471 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6472 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6473 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6474 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6475 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6476 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6477 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6478 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" +@.str.6479 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6480 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6481 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6482 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6483 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6484 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6485 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6486 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6487 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6488 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6489 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.6490 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6491 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6492 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6493 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6494 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6495 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6496 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6497 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6498 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" +@.str.6499 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" +@.str.6500 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6501 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6502 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6503 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6504 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6505 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6506 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6507 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6508 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6509 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6510 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6511 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6512 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6513 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6514 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6515 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" +@.str.6516 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6517 = private unnamed_addr constant [6 x i8] c"/-_.~\00" +@.str.6518 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6519 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.6520 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6521 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6522 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6523 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6524 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6525 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6526 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6527 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6528 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6529 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6530 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6531 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6532 = private unnamed_addr constant [1 x i8] c"\00" +declare i32 @getchar() +@.str.6533 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6534 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6535 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.6536 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@stdin = external global ptr +declare i32 @feof(ptr) +@.str.6537 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" +@.str.6538 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6539 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" +@.str.6540 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6541 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6542 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" +@.str.6543 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" +@.str.6544 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" +@.str.6545 = private unnamed_addr constant [1 x i8] c"\00" +@stdout = external global ptr +declare i64 @fwrite(ptr, i64, i64, ptr) +@.str.6546 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6547 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6548 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6549 = private unnamed_addr constant [7 x i8] c"result\00" +@.str.6550 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6551 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6552 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6553 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6554 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6555 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6556 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6557 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6558 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6559 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.6560 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6561 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.6562 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6563 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6564 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6565 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6566 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6567 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6568 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6569 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6570 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6571 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6572 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6573 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.6574 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6575 = private unnamed_addr constant [3 x i8] c"@R\00" +@.str.6576 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6577 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6578 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6579 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6580 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6581 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6582 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6583 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6584 = private unnamed_addr constant [3 x i8] c"@V\00" +@.str.6585 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6586 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6587 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6588 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6589 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6590 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6591 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6592 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6593 = private unnamed_addr constant [3 x i8] c"@F\00" +@.str.6594 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6595 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6596 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6597 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6598 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6599 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6600 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6601 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6602 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6603 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6604 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.6605 = private unnamed_addr constant [3 x i8] c"@S\00" +@.str.6606 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6607 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6608 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6609 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6610 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6611 = private unnamed_addr constant [4 x i8] c"@SF\00" +@.str.6612 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6613 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6614 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6615 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6616 = private unnamed_addr constant [3 x i8] c"@E\00" +@.str.6617 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6618 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6619 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6620 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6621 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6622 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6623 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6624 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6625 = private unnamed_addr constant [3 x i8] c"@I\00" +@.str.6626 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6627 = private unnamed_addr constant [11 x i8] c"mkdir -p '\00" +@.str.6628 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6629 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6630 = private unnamed_addr constant [5 x i8] c"/doc\00" +@.str.6631 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.6632 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6633 = private unnamed_addr constant [13 x i8] c" --overlay '\00" +@.str.6634 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.6635 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6636 = private unnamed_addr constant [9 x i8] c"/out.txt\00" +@.str.6637 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6638 = private unnamed_addr constant [10 x i8] c"' index '\00" +@.str.6639 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6640 = private unnamed_addr constant [5 x i8] c" > '\00" +@.str.6641 = private unnamed_addr constant [7 x i8] c"' 2>&1\00" +@.str.6642 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6643 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6644 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6645 = private unnamed_addr constant [9 x i8] c"severity\00" +@.str.6646 = private unnamed_addr constant [7 x i8] c"source\00" +@.str.6647 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6648 = private unnamed_addr constant [8 x i8] c"message\00" +@.str.6649 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6650 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6651 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6652 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6653 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6654 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6655 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6656 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6657 = private unnamed_addr constant [9 x i8] c"contents\00" +@.str.6658 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6659 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6660 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6661 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6662 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6663 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6664 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6665 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6666 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6667 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6668 = private unnamed_addr constant [15 x i8] c"selectionRange\00" +@.str.6669 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6670 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6671 = private unnamed_addr constant [7 x i8] c"detail\00" +@.str.6672 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6673 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6674 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6675 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6676 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6677 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6678 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6679 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" +@.str.6680 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6681 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6682 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6683 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6684 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6685 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6686 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6687 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6688 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6689 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6690 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6691 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6692 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6693 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6694 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6695 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6696 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6697 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6698 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6699 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6700 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6701 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6702 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6703 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6704 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6705 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6706 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6707 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6708 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6709 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6710 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6711 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.6712 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6713 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6714 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6715 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6716 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6717 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6718 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6719 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6720 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6722 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6723 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6725 = private unnamed_addr constant [7 x i8] c"module\00" +@.str.6726 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6727 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6728 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6729 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6730 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6731 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" +@.str.6732 = private unnamed_addr constant [6 x i8] c"items\00" +@.str.6733 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6734 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6735 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6736 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6737 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6738 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6739 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6740 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6741 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6742 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6743 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6744 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6745 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6746 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6747 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6748 = private unnamed_addr constant [11 x i8] c"parameters\00" +@.str.6749 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6750 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6751 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6752 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6753 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6754 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6755 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6756 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6757 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6758 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6759 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6760 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6761 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6762 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6763 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6764 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6765 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6766 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6767 = private unnamed_addr constant [11 x i8] c"initialize\00" +@.str.6768 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" +@.str.6769 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" +@.str.6770 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" +@.str.6771 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" +@.str.6772 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6773 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6774 = private unnamed_addr constant [19 x i8] c"completionProvider\00" +@.str.6775 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6776 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6777 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6778 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" +@.str.6779 = private unnamed_addr constant [13 x i8] c"capabilities\00" +@.str.6780 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6781 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6782 = private unnamed_addr constant [11 x i8] c"serverInfo\00" +@.str.6783 = private unnamed_addr constant [9 x i8] c"shutdown\00" +@.str.6784 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.6785 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" +@.str.6786 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" +@.str.6787 = private unnamed_addr constant [15 x i8] c"contentChanges\00" +@.str.6788 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6789 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6790 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" +@.str.6791 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" +@.str.6792 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6793 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6794 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6795 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.6796 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.6797 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.6798 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.6799 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" +@.str.6800 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.6801 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6802 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.6803 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6804 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6805 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6806 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6807 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.6808 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.6809 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.6810 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.6811 = private unnamed_addr constant [16 x i8] c"/tmp/finch_lsp_\00" +@.str.6812 = private unnamed_addr constant [9 x i8] c"rm -rf '\00" +@.str.6813 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6814 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6815 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6816 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6817 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6818 = private unnamed_addr constant [3 x i8] c"\5C\22\00" +@.str.6819 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.6820 = private unnamed_addr constant [3 x i8] c"\5Cn\00" +@.str.6821 = private unnamed_addr constant [3 x i8] c"\5Cr\00" +@.str.6822 = private unnamed_addr constant [3 x i8] c"\5Ct\00" +@.str.6823 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" +@.str.6824 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6825 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6826 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.6827 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6829 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6830 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6831 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6832 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6833 = private unnamed_addr constant [3 x i8] c": \00" +@.str.6834 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6835 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6836 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.6837 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6838 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6839 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.6840 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6841 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6842 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.6843 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6844 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6845 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6846 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6847 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6848 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6849 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6850 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6851 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6852 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6853 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6854 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6855 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6856 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6857 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6858 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6859 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6860 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6861 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6862 = private unnamed_addr constant [3 x i8] c"{}\00" +@.str.6863 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6864 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6865 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.6866 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6867 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6868 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6869 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6870 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6871 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6872 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6873 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.6874 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6875 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.6876 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6877 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6878 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6879 = private unnamed_addr constant [3 x i8] c" \00" +@.str.6880 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6881 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6882 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6883 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6884 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6885 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6886 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6887 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6888 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6889 = private unnamed_addr constant [6 x i8] c"line \00" +@.str.6890 = private unnamed_addr constant [10 x i8] c", column \00" +@.str.6891 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6892 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6893 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6894 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6895 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6896 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6897 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6898 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6899 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6900 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6901 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6902 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6903 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6904 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6905 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6906 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6907 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6908 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6909 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6910 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6911 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6912 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6913 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6914 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6915 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6916 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6917 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6918 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6919 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6920 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6921 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6922 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6923 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6924 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6925 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6926 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6927 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6928 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6929 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6930 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" +@.str.6931 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.6932 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6933 = private unnamed_addr constant [14 x i8] c"json: found '\00" +@.str.6934 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6935 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6936 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6937 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6938 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6939 = private unnamed_addr constant [9 x i8] c"' where \00" +@.str.6940 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.6941 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6942 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6943 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6944 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6945 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6946 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6947 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6948 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6949 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6950 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6951 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6952 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6953 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6954 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6955 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6956 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6957 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6958 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6959 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6960 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6961 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6962 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6963 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6964 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6965 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6966 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" +@.str.6967 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6968 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6969 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6970 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6971 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6972 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6973 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6974 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6975 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6976 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6977 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6978 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6979 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6980 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6981 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6982 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" +@.str.6983 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6984 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6985 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6986 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6987 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6988 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6989 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6990 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6991 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6992 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6993 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6994 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6995 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6996 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6997 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" +@.str.6998 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6999 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7000 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7001 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7002 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7003 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7004 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7005 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7006 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7007 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7008 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7009 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7010 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7011 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.7012 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.7013 = private unnamed_addr constant [3 x i8] c"\5Cu\00" +@.str.7014 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7015 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7016 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" +@.str.7017 = private unnamed_addr constant [13 x i8] c" in a text (\00" +@.str.7018 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7019 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7020 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7021 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7022 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7023 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7024 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7025 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7026 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7027 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7028 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7029 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7030 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7031 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7032 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7033 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7034 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7035 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7036 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7037 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7038 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7039 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7040 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7041 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7042 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7043 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7044 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7045 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7046 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7047 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7048 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7049 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7050 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7051 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7052 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7053 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7054 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7055 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7056 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7057 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7058 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7059 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7060 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7061 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7062 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7063 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7064 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7065 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7066 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7067 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7068 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7069 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7070 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7071 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7072 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7073 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.7074 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7075 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7076 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7077 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7078 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7079 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7080 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7081 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7082 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7083 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" +@.str.7084 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7085 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7086 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7087 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7088 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7089 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7090 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7091 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" +@.str.7092 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7093 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7094 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7095 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7096 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7097 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7098 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7099 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7100 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" +@.str.7101 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.7102 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.7103 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.7104 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7105 = private unnamed_addr constant [20 x i8] c"the end of the text\00" + +declare void @finch_panic(ptr, i64, ptr) noreturn cold +declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold +declare ptr @finch_alloc(i64) +declare void @finch_str_copy(ptr, ptr) +declare void @finch_str_own(ptr) +declare void @finch_str_concat(ptr, ptr, ptr) +declare i32 @finch_str_eq(ptr, ptr) +declare i64 @finch_str_cmp(ptr, ptr) +declare void @finch_buf_add(ptr, ptr, i64) +declare void @finch_buf_int(ptr, i64) +declare void @finch_buf_uint(ptr, i64) +declare void @finch_buf_float(ptr, double) +declare void @finch_buf_bool(ptr, i32) +declare void @finch_buf_ptr(ptr, ptr) +declare void @finch_buf_char(ptr, i8, i32) +declare void @finch_buf_str(ptr, ptr, i32) +declare void @finch_buf_print(ptr) +declare void @finch_str_from_int(ptr, i64) +declare void @finch_str_from_uint(ptr, i64) +declare void @finch_str_from_float(ptr, double) +declare void @finch_str_from_char(ptr, i8 signext) +declare void @finch_str_from_bool(ptr, i32) +declare i64 @finch_str_to_int(ptr, ptr, i64) +declare double @finch_str_to_float(ptr, ptr, i64) +declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64) +declare i64 @finch_str_find(ptr, ptr) +declare i32 @finch_str_starts(ptr, ptr) +declare i32 @finch_str_ends(ptr, ptr) +declare void @finch_str_trim(ptr, ptr) +declare void @finch_str_upper(ptr, ptr) +declare void @finch_str_lower(ptr, ptr) +declare void @finch_str_replace(ptr, ptr, ptr, ptr) +declare void @finch_str_split(ptr, ptr, ptr) +declare void @finch_str_join(ptr, ptr, ptr) +declare void @finch_str_repeat(ptr, ptr, i64) +declare void @finch_bytes_from_str(ptr, ptr) +declare i64 @finch_map_find(ptr, ptr, i64, i64, i32) +declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr) +declare void @finch_map_remove_at(ptr, i64, i64) +declare void @finch_map_clear(ptr) +declare void @finch_map_clone_raw(ptr, ptr, i64) +declare void @finch_map_missing(ptr, i64, ptr) noreturn cold +declare void @finch_map_changed(ptr, i64) noreturn cold +declare void @finch_arr_reserve(ptr, i64, i64) +declare void @finch_arr_clone_raw(ptr, ptr, i64) +declare void @finch_arr_make(ptr, i64, i64) +declare void @finch_arr_resize(ptr, i64, i64) +declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64) +declare void @finch_arr_remove_gap(ptr, i64, i64) +declare void @qsort(ptr, i64, i64, ptr) +declare void @finch_args(ptr, i32, ptr) +declare void @finch_input(ptr, ptr) +declare i32 @finch_file_exists(ptr) +declare i32 @finch_str_try_int(ptr, ptr, ptr) +declare i32 @finch_str_try_float(ptr, ptr, ptr) +declare i32 @finch_try_read_file(ptr, ptr, ptr) +declare i32 @finch_try_write_file(ptr, ptr, ptr) +declare i32 @finch_try_delete_file(ptr, ptr) +declare void @finch_report_error(ptr) +declare void @finch_read_file(ptr, ptr, ptr, i64) +declare i32 @finch_write_file(ptr, ptr) +declare i64 @finch_shell(ptr) +declare i32 @finch_delete_file(ptr) +declare i32 @printf(ptr, ...) +declare i32 @fflush(ptr) +declare void @finch_str_from_c(ptr, ptr) +declare void @finch_on_fatal(ptr) +declare ptr @finch_std_stream(i32) +declare void @finch_str_from_bytes(ptr, ptr) +declare void @exit(i32) noreturn +declare void @free(ptr) + +define internal { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca i64, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = sub i64 %t3, 1 + store i64 %t4, ptr %a5 + br label %while.cond1 +while.cond1: + %t6 = load i64, ptr %a5 + %t7 = icmp sge i64 %t6, 0 + br label %logic.from4 +logic.from4: + br i1 %t7, label %logic.rhs5, label %logic.end6 +logic.rhs5: + %t8 = load i64, ptr %a5 + %t9 = load { ptr, i64, i64 }, ptr %a1 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %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) + unreachable +inrange8: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds i8, ptr %t12, i64 %t8 + %t14 = load i8, ptr %t13 + %t15 = icmp ne i8 %t14, 47 + br label %logic.rend9 +logic.rend9: + br label %logic.end6 +logic.end6: + %t16 = phi i1 [ false, %logic.from4 ], [ %t15, %logic.rend9 ] + br i1 %t16, label %while.body2, label %while.end3 +while.body2: + %t17 = load i64, ptr %a5 + %t18 = sub i64 %t17, 1 + store i64 %t18, ptr %a5 + br label %while.cond1 +while.end3: + %t19 = load i64, ptr %a5 + %t20 = icmp slt i64 %t19, 0 + br i1 %t20, label %then10, label %endif12 +then10: + ret { ptr, i64, i64 } { ptr @.str.2, i64 1, i64 0 } +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) + %t25 = load { ptr, i64, i64 }, ptr %a23 + ret { ptr, i64, i64 } %t25 +} + +define internal { ptr, i64, i64 } @finch.main.stem({ 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 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + br label %logic.from13 +logic.from13: + br i1 %t18, 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 + 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 +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 + 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 +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 + ret { ptr, i64, i64 } %t47 +} + +define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a11 = alloca i64, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic23, label %ok24 +panic23: + call void @finch_panic(ptr @.str.11, i64 53, ptr @.str.12) + unreachable +ok24: + %t5 = getelementptr inbounds %S.main.Loader, ptr %t3, i32 0, i32 6 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a8 + %t9 = load i64, ptr %t6 + %t10 = load ptr, ptr %t5 + store i64 0, ptr %a11 + br label %find.cond25 +find.cond25: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t9 + br i1 %t13, label %find.body26, label %find.end29 +find.body26: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } %t7, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %find.hit27, label %find.next28 +find.hit27: + store i64 %t12, ptr %a8 + br label %find.end29 +find.next28: + %t20 = add i64 %t12, 1 + store i64 %t20, ptr %a11 + br label %find.cond25 +find.end29: + %t21 = load i64, ptr %a8 + store i64 %t21, ptr %a22 + %t23 = load i64, ptr %a22 + %t24 = icmp sge i64 %t23, 0 + br i1 %t24, label %then30, label %endif32 +then30: + %t25 = load ptr, ptr %a1 + %t26 = icmp eq ptr %t25, null + br i1 %t26, label %panic33, label %ok34 +panic33: + call void @finch_panic(ptr @.str.13, i64 55, ptr @.str.14) + unreachable +ok34: + %t27 = getelementptr inbounds %S.main.Loader, ptr %t25, i32 0, i32 7 + %t28 = load i64, ptr %a22 + %t29 = load { ptr, i64, i64 }, ptr %t27 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range35, label %inrange36 +range35: + call void @finch_panic_index(ptr @.str.15, i64 55, i64 %t28, i64 %t30) + unreachable +inrange36: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 55) + %t37 = load { ptr, i64, i64 }, ptr %a36 + ret { ptr, i64, i64 } %t37 +endif32: + %t38 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 57) + %t41 = load { ptr, i64, i64 }, ptr %a40 + ret { ptr, i64, i64 } %t41 +} + +define internal { ptr, i64, i64 } @finch.main.findModule(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = 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 + %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 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = 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 + %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 + %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 + %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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = 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 + %a78 = 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 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = 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 + %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 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a138 = 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 + %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 + %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 + %a170 = 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 + %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 + %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 + %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 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a238 = 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 + %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 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a269 = 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 + %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 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = 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, i64, i64 }, ptr %a2 + %t5 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t4) + store { ptr, i64, i64 } %t5, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.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 } %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 + 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 +panic37: + call void @finch_panic(ptr @.str.22, i64 65, 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 +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 + store { ptr, i64, i64 } %t60, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a63 + call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) + %t64 = load { ptr, i64, i64 }, ptr %a61 + %t65 = load ptr, ptr %a1 + %t66 = icmp eq ptr %t65, null + br i1 %t66, label %panic42, label %ok43 +panic42: + call void @finch_panic(ptr @.str.27, i64 66, 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 +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 +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 +endif46: + %t85 = load ptr, ptr %a1 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic47, label %ok48 +panic47: + call void @finch_panic(ptr @.str.30, i64 71, ptr @.str.31) + unreachable +ok48: + %t87 = getelementptr inbounds %S.main.Loader, ptr %t85, i32 0, i32 5 + store i64 0, ptr %a88 + 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 +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 +panic53: + call void @finch_panic(ptr @.str.34, i64 72, 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 +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 +panic58: + call void @finch_panic(ptr @.str.39, i64 73, 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 + 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 +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 +endif62: + br label %each.step51 +each.step51: + %t183 = load i64, ptr %a88 + %t184 = add i64 %t183, 1 + store i64 %t184, ptr %a88 + br label %each.cond49 +each.end52: + %t185 = load ptr, ptr %a1 + %t186 = icmp eq ptr %t185, null + br i1 %t186, label %panic63, label %ok64 +panic63: + call void @finch_panic(ptr @.str.46, i64 79, 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 +then65: + %t191 = load ptr, ptr %a1 + %t192 = icmp eq ptr %t191, null + br i1 %t192, label %panic68, label %ok69 +panic68: + call void @finch_panic(ptr @.str.48, i64 80, 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 +panic70: + call void @finch_panic(ptr @.str.52, i64 80, 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 +then72: + %t223 = load ptr, ptr %a1 + %t224 = icmp eq ptr %t223, null + br i1 %t224, label %panic75, label %ok76 +panic75: + call void @finch_panic(ptr @.str.55, i64 81, 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 + 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: + %t272 = load ptr, ptr %a1 + %t273 = icmp eq ptr %t272, null + br i1 %t273, label %panic84, label %ok85 +panic84: + call void @finch_panic(ptr @.str.66, i64 84, 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 +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 +} + +define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, 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.cond107 +n.cond107: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body108, label %n.end109 +n.body108: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 + call void @finch_str_copy(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond107 +n.end109: + ret void +} + +define internal void @finch.copy.arr_S_ast_Type(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.ast.Type, 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.cond115 +n.cond115: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body116, label %n.end117 +n.body116: + %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 + call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond115 +n.end117: + ret void +} + +define internal void @finch.copy.S_ast_Type(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.ast.Type, ptr %src + store %S.ast.Type %t1, ptr %dst + %t2 = getelementptr inbounds %S.ast.Type, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.ast.Type, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.ast.Type, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.ast.Type, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_ast_Type(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.ast.Type, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.ast.Type, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.ast.Type, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.ast.Type, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.S_ast_Node(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.ast.Node, ptr %src + store %S.ast.Node %t1, ptr %dst + %t2 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 4 + %t11 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 5 + %t13 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 5 + call void @finch.copy.S_ast_Type(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 9 + %t15 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 9 + call void @finch.copy.arr_S_ast_Node(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.ast.Node, ptr %dst, i32 0, i32 10 + %t17 = getelementptr inbounds %S.ast.Node, ptr %src, i32 0, i32 10 + call void @finch.copy.arr_str(ptr %t16, ptr %t17) + ret void +} + +define internal void @finch.copy.arr_S_ast_Node(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.ast.Node, 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.cond112 +n.cond112: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body113, label %n.end114 +n.body113: + %t8 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.ast.Node, ptr %t2, i64 %t6 + call void @finch.copy.S_ast_Node(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond112 +n.end114: + ret void +} + +define internal void @finch.copy.S_ast_Program(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.ast.Program, ptr %src + store %S.ast.Program %t1, ptr %dst + %t2 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_str(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 4 + %t11 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 5 + %t13 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 6 + %t15 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_S_ast_Node(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 7 + %t17 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 7 + call void @finch.copy.arr_S_ast_Node(ptr %t16, ptr %t17) + %t18 = getelementptr inbounds %S.ast.Program, ptr %dst, i32 0, i32 8 + %t19 = getelementptr inbounds %S.ast.Program, ptr %src, i32 0, i32 8 + call void @finch.copy.arr_S_ast_Node(ptr %t18, ptr %t19) + ret void +} + +define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca i64, align 16 + %a17 = alloca i64, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca i64, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca %S.ast.Program, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca %S.ast.Program, align 16 + %a128 = alloca %S.ast.Program, align 16 + %a134 = alloca i64, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca i64, align 16 + %a151 = alloca i64, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t4, ptr %a5 + %t6 = call i32 @finch_file_exists(ptr %a5) + %t7 = icmp ne i32 %t6, 0 + %t8 = xor i1 %t7, true + br label %logic.from86 +logic.from86: + br i1 %t8, label %logic.rhs87, label %logic.end88 +logic.rhs87: + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic89, label %ok90 +panic89: + call void @finch_panic(ptr @.str.70, i64 91, ptr @.str.71) + unreachable +ok90: + %t11 = getelementptr inbounds %S.main.Loader, ptr %t9, i32 0, i32 6 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 + %t13 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a14 + %t15 = load i64, ptr %t12 + %t16 = load ptr, ptr %t11 + store i64 0, ptr %a17 + br label %find.cond91 +find.cond91: + %t18 = load i64, ptr %a17 + %t19 = icmp slt i64 %t18, %t15 + br i1 %t19, label %find.body92, label %find.end95 +find.body92: + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t18 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } %t13, ptr %a23 + %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + br i1 %t25, label %find.hit93, label %find.next94 +find.hit93: + store i64 %t18, ptr %a14 + br label %find.end95 +find.next94: + %t26 = add i64 %t18, 1 + store i64 %t26, ptr %a17 + br label %find.cond91 +find.end95: + %t27 = load i64, ptr %a14 + %t28 = icmp sge i64 %t27, 0 + %t29 = xor i1 %t28, true + br label %logic.rend96 +logic.rend96: + br label %logic.end88 +logic.end88: + %t30 = phi i1 [ false, %logic.from86 ], [ %t29, %logic.rend96 ] + br i1 %t30, label %then97, label %endif99 +then97: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = icmp sgt i64 %t32, 0 + br i1 %t33, label %then100, label %else101 +then100: + %t34 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.72, i64 30, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.73, i64 14, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a39 + %t43 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t42, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = trunc i64 %t52 to i32 + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = icmp eq ptr %t54, null + %t56 = select i1 %t55, ptr @.str.75, ptr %t54 + %t57 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t53, ptr %t56) + %t58 = call i32 (ptr, ...) @printf(ptr @.str.77) + br label %endif102 +else101: + %t59 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = trunc i64 %t68 to i32 + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = icmp eq ptr %t70, null + %t72 = select i1 %t71, ptr @.str.80, ptr %t70 + %t73 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t69, ptr %t72) + %t74 = call i32 (ptr, ...) @printf(ptr @.str.82) + br label %endif102 +endif102: + %t75 = trunc i64 1 to i32 + %t76 = call i32 @fflush(ptr null) + call void @exit(i32 %t75) + br label %endif99 +endif99: + %t77 = load ptr, ptr %a1 + %t78 = load { ptr, i64, i64 }, ptr %a2 + %t79 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t77, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic103, label %ok104 +panic103: + call void @finch_panic(ptr @.str.83, i64 100, ptr @.str.84) + unreachable +ok104: + %t83 = getelementptr inbounds %S.main.Loader, ptr %t81, i32 0, i32 1 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + store i64 %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic105, label %ok106 +panic105: + call void @finch_panic(ptr @.str.85, i64 101, ptr @.str.86) + unreachable +ok106: + %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t91, ptr %a92 + call void @finch_str_copy(ptr %a93, ptr %a92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + %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) + 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) + 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) + unreachable +ok133: + %t166 = getelementptr inbounds %S.main.Loader, ptr %t164, i32 0, i32 2 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 + %t168 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_copy(ptr %a170, ptr %a169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + %t172 = load i64, ptr %t167 + %t173 = add i64 %t172, 1 + call void @finch_arr_reserve(ptr %t166, i64 %t173, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t174 = load ptr, ptr %t166 + %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i64 %t172 + store { ptr, i64, i64 } %t171, ptr %t175 + store i64 %t173, ptr %t167 + %t176 = load ptr, ptr %a1 + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a2 + %t179 = load { ptr, i64, i64 }, ptr %a142 + %t180 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t177, { ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) + %t181 = load { ptr, i64, i64 }, ptr %a142 + call void @finch.main.load(ptr %t176, { ptr, i64, i64 } %t180, { ptr, i64, i64 } %t181) + br label %endif131 +endif131: + br label %each.step120 +each.step120: + %t182 = load i64, ptr %a134 + %t183 = add i64 %t182, 1 + store i64 %t183, ptr %a134 + br label %each.cond118 +each.end121: + ret void +} + +define internal void @finch.main.usage() { +entry: + + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 41, i64 0 }, 1 + %t2 = trunc i64 %t1 to i32 + %t3 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 41, i64 0 }, 0 + %t4 = icmp eq ptr %t3, null + %t5 = select i1 %t4, ptr @.str.94, ptr %t3 + %t6 = call i32 (ptr, ...) @printf(ptr @.str.95, i32 %t2, ptr %t5) + %t7 = call i32 (ptr, ...) @printf(ptr @.str.96) + %t8 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 6, i64 0 }, 1 + %t9 = trunc i64 %t8 to i32 + %t10 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 6, i64 0 }, 0 + %t11 = icmp eq ptr %t10, null + %t12 = select i1 %t11, ptr @.str.98, ptr %t10 + %t13 = call i32 (ptr, ...) @printf(ptr @.str.99, i32 %t9, ptr %t12) + %t14 = call i32 (ptr, ...) @printf(ptr @.str.100) + %t15 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 60, i64 0 }, 1 + %t16 = trunc i64 %t15 to i32 + %t17 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 60, i64 0 }, 0 + %t18 = icmp eq ptr %t17, null + %t19 = select i1 %t18, ptr @.str.102, ptr %t17 + %t20 = call i32 (ptr, ...) @printf(ptr @.str.103, i32 %t16, ptr %t19) + %t21 = call i32 (ptr, ...) @printf(ptr @.str.104) + %t22 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 52, i64 0 }, 1 + %t23 = trunc i64 %t22 to i32 + %t24 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 52, i64 0 }, 0 + %t25 = icmp eq ptr %t24, null + %t26 = select i1 %t25, ptr @.str.106, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.107, i32 %t23, ptr %t26) + %t28 = call i32 (ptr, ...) @printf(ptr @.str.108) + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 54, i64 0 }, 1 + %t30 = trunc i64 %t29 to i32 + %t31 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 54, i64 0 }, 0 + %t32 = icmp eq ptr %t31, null + %t33 = select i1 %t32, ptr @.str.110, ptr %t31 + %t34 = call i32 (ptr, ...) @printf(ptr @.str.111, i32 %t30, ptr %t33) + %t35 = call i32 (ptr, ...) @printf(ptr @.str.112) + %t36 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 1 + %t37 = trunc i64 %t36 to i32 + %t38 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 0 + %t39 = icmp eq ptr %t38, null + %t40 = select i1 %t39, ptr @.str.114, ptr %t38 + %t41 = call i32 (ptr, ...) @printf(ptr @.str.115, i32 %t37, ptr %t40) + %t42 = call i32 (ptr, ...) @printf(ptr @.str.116) + %t43 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 90, i64 0 }, 1 + %t44 = trunc i64 %t43 to i32 + %t45 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 90, i64 0 }, 0 + %t46 = icmp eq ptr %t45, null + %t47 = select i1 %t46, ptr @.str.118, ptr %t45 + %t48 = call i32 (ptr, ...) @printf(ptr @.str.119, i32 %t44, ptr %t47) + %t49 = call i32 (ptr, ...) @printf(ptr @.str.120) + %t50 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 8, i64 0 }, 1 + %t51 = trunc i64 %t50 to i32 + %t52 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 8, i64 0 }, 0 + %t53 = icmp eq ptr %t52, null + %t54 = select i1 %t53, ptr @.str.122, ptr %t52 + %t55 = call i32 (ptr, ...) @printf(ptr @.str.123, i32 %t51, ptr %t54) + %t56 = call i32 (ptr, ...) @printf(ptr @.str.124) + %t57 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 53, i64 0 }, 1 + %t58 = trunc i64 %t57 to i32 + %t59 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 53, i64 0 }, 0 + %t60 = icmp eq ptr %t59, null + %t61 = select i1 %t60, ptr @.str.126, ptr %t59 + %t62 = call i32 (ptr, ...) @printf(ptr @.str.127, i32 %t58, ptr %t61) + %t63 = call i32 (ptr, ...) @printf(ptr @.str.128) + %t64 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 76, i64 0 }, 1 + %t65 = trunc i64 %t64 to i32 + %t66 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 76, i64 0 }, 0 + %t67 = icmp eq ptr %t66, null + %t68 = select i1 %t67, ptr @.str.130, ptr %t66 + %t69 = call i32 (ptr, ...) @printf(ptr @.str.131, i32 %t65, ptr %t68) + %t70 = call i32 (ptr, ...) @printf(ptr @.str.132) + %t71 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 57, i64 0 }, 1 + %t72 = trunc i64 %t71 to i32 + %t73 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 57, i64 0 }, 0 + %t74 = icmp eq ptr %t73, null + %t75 = select i1 %t74, ptr @.str.134, ptr %t73 + %t76 = call i32 (ptr, ...) @printf(ptr @.str.135, i32 %t72, ptr %t75) + %t77 = call i32 (ptr, ...) @printf(ptr @.str.136) + %t78 = extractvalue { ptr, i64, i64 } { ptr @.str.137, i64 66, i64 0 }, 1 + %t79 = trunc i64 %t78 to i32 + %t80 = extractvalue { ptr, i64, i64 } { ptr @.str.137, i64 66, i64 0 }, 0 + %t81 = icmp eq ptr %t80, null + %t82 = select i1 %t81, ptr @.str.138, ptr %t80 + %t83 = call i32 (ptr, ...) @printf(ptr @.str.139, i32 %t79, ptr %t82) + %t84 = call i32 (ptr, ...) @printf(ptr @.str.140) + %t85 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 101, i64 0 }, 1 + %t86 = trunc i64 %t85 to i32 + %t87 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 101, i64 0 }, 0 + %t88 = icmp eq ptr %t87, null + %t89 = select i1 %t88, ptr @.str.142, ptr %t87 + %t90 = call i32 (ptr, ...) @printf(ptr @.str.143, i32 %t86, ptr %t89) + %t91 = call i32 (ptr, ...) @printf(ptr @.str.144) + %t92 = trunc i64 1 to i32 + %t93 = call i32 @fflush(ptr null) + call void @exit(i32 %t92) + ret void +} + +define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.platform.Target, ptr %src + store %S.platform.Target %t1, ptr %dst + %t2 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 6 + %t5 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 6 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 7 + %t7 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 7 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.platform.Target, ptr %dst, i32 0, i32 8 + %t9 = getelementptr inbounds %S.platform.Target, ptr %src, i32 0, i32 8 + call void @finch_str_copy(ptr %t8, ptr %t9) + ret void +} + +define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = 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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca i1, align 16 + %a105 = alloca i1, align 16 + %a106 = alloca i1, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca i64, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a407 = alloca { ptr, i64, i64 }, align 16 + %a408 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a411 = alloca { ptr, i64, i64 }, align 16 + %a412 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca %S.main.Loader, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca i64, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a490 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca i64, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = 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 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca i64, align 16 + %a569 = alloca %S.ast.Program, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca i64, align 16 + %a579 = alloca i64, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %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 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a680 = alloca i64, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %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 + %a726 = alloca { ptr, i64, i64 }, align 16 + %a727 = alloca { ptr, i64, i64 }, align 16 + %a737 = 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 + %a775 = alloca { ptr, i64, i64 }, align 16 + %a776 = alloca { ptr, i64, i64 }, align 16 + %a786 = alloca { ptr, i64, i64 }, align 16 + %a788 = alloca { ptr, i64, i64 }, align 16 + %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 + %a800 = alloca { ptr, i64, i64 }, align 16 + %a801 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a806 = alloca { ptr, i64, i64 }, align 16 + %a822 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a885 = alloca { ptr, i64, i64 }, align 16 + %a888 = alloca { ptr, i64, i64 }, align 16 + %a889 = alloca { ptr, i64, i64 }, align 16 + %a893 = alloca { ptr, i64, i64 }, align 16 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a898 = alloca { ptr, i64, i64 }, align 16 + %a899 = alloca { ptr, i64, i64 }, align 16 + %a903 = alloca { ptr, i64, i64 }, align 16 + %a904 = alloca { ptr, i64, i64 }, align 16 + %a908 = alloca { ptr, i64, i64 }, align 16 + %a909 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 + %a916 = alloca { ptr, i64, i64 }, align 16 + %a924 = alloca { ptr, i64, i64 }, align 16 + %a925 = alloca { ptr, i64, i64 }, align 16 + %a928 = alloca { ptr, i64, i64 }, align 16 + %a929 = alloca i64, align 16 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a951 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a955 = alloca { ptr, i64, i64 }, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a960 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a965 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a968 = alloca { ptr, i64, i64 }, align 16 + %a970 = alloca i64, align 16 + %a973 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 + %a977 = alloca { ptr, i64, i64 }, align 16 + %a978 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = icmp eq i64 %t3, 2 + br label %logic.from134 +logic.from134: + br i1 %t4, label %logic.rhs135, label %logic.end136 +logic.rhs135: + %t5 = load { ptr, i64, i64 }, ptr %a1 + %t6 = extractvalue { ptr, i64, i64 } %t5, 1 + %t7 = icmp uge i64 1, %t6 + br i1 %t7, label %range137, label %inrange138 +range137: + call void @finch_panic_index(ptr @.str.145, i64 133, i64 1, i64 %t6) + unreachable +inrange138: + %t8 = extractvalue { ptr, i64, i64 } %t5, 0 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 + %t10 = load { ptr, i64, i64 }, ptr %t9 + store { ptr, i64, i64 } %t10, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.146, i64 7, i64 0 }, ptr %a12 + %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) + %t14 = icmp ne i32 %t13, 0 + br label %logic.from139 +logic.from139: + br i1 %t14, label %logic.end141, label %logic.rhs140 +logic.rhs140: + %t15 = load { ptr, i64, i64 }, ptr %a1 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 1, %t16 + br i1 %t17, label %range142, label %inrange143 +range142: + call void @finch_panic_index(ptr @.str.147, i64 133, i64 1, i64 %t16) + unreachable +inrange143: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 + %t20 = load { ptr, i64, i64 }, ptr %t19 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.148, i64 9, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br label %logic.rend144 +logic.rend144: + br label %logic.end141 +logic.end141: + %t25 = phi i1 [ true, %logic.from139 ], [ %t24, %logic.rend144 ] + br label %logic.rend145 +logic.rend145: + br label %logic.end136 +logic.end136: + %t26 = phi i1 [ false, %logic.from134 ], [ %t25, %logic.rend145 ] + br i1 %t26, label %then146, label %endif148 +then146: + %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.149, i64 46, i64 0 }, 1 + %t28 = trunc i64 %t27 to i32 + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.149, 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) + ret i64 0 +endif148: + %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: + %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) + unreachable +inrange153: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t42, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.154, i64 3, i64 0 }, ptr %a44 + %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) + %t46 = icmp ne i32 %t45, 0 + br label %logic.rend154 +logic.rend154: + br label %logic.end151 +logic.end151: + %t47 = phi i1 [ false, %logic.from149 ], [ %t46, %logic.rend154 ] + br i1 %t47, label %then155, label %endif157 +then155: + %t48 = load { ptr, i64, i64 }, ptr %a1 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 0, %t49 + br i1 %t50, label %range158, label %inrange159 +range158: + call void @finch_panic_index(ptr @.str.155, i64 138, i64 0, i64 %t49) + unreachable +inrange159: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) + ret i64 %t54 +endif157: + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = icmp slt i64 %t56, 3 + br i1 %t57, label %then160, label %endif162 +then160: + call void @finch.main.usage() + br label %endif162 +endif162: + %t58 = load { ptr, i64, i64 }, ptr %a1 + %t59 = extractvalue { ptr, i64, i64 } %t58, 1 + %t60 = icmp uge i64 1, %t59 + br i1 %t60, label %range163, label %inrange164 +range163: + call void @finch_panic_index(ptr @.str.156, i64 143, i64 1, i64 %t59) + unreachable +inrange164: + %t61 = extractvalue { ptr, i64, i64 } %t58, 0 + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t66, ptr %a67 + %t68 = load { ptr, i64, i64 }, ptr %a1 + %t69 = extractvalue { ptr, i64, i64 } %t68, 1 + %t70 = icmp uge i64 2, %t69 + br i1 %t70, label %range165, label %inrange166 +range165: + call void @finch_panic_index(ptr @.str.157, i64 144, i64 2, i64 %t69) + unreachable +inrange166: + %t71 = extractvalue { ptr, i64, i64 } %t68, 0 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t73, ptr %a74 + call void @finch_str_copy(ptr %a75, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t76, ptr %a77 + %t78 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t78, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.158, i64 5, i64 0 }, ptr %a80 + %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) + %t82 = icmp eq i32 %t81, 0 + br label %logic.from167 +logic.from167: + br i1 %t82, label %logic.rhs168, label %logic.end169 +logic.rhs168: + %t83 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t83, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.159, i64 3, i64 0 }, ptr %a85 + %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) + %t87 = icmp eq i32 %t86, 0 + br label %logic.rend170 +logic.rend170: + br label %logic.end169 +logic.end169: + %t88 = phi i1 [ false, %logic.from167 ], [ %t87, %logic.rend170 ] + br label %logic.from171 +logic.from171: + br i1 %t88, label %logic.rhs172, label %logic.end173 +logic.rhs172: + %t89 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.160, i64 2, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp eq i32 %t92, 0 + br label %logic.rend174 +logic.rend174: + br label %logic.end173 +logic.end173: + %t94 = phi i1 [ false, %logic.from171 ], [ %t93, %logic.rend174 ] + br label %logic.from175 +logic.from175: + br i1 %t94, label %logic.rhs176, label %logic.end177 +logic.rhs176: + %t95 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.161, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp eq i32 %t98, 0 + br label %logic.rend178 +logic.rend178: + br label %logic.end177 +logic.end177: + %t100 = phi i1 [ false, %logic.from175 ], [ %t99, %logic.rend178 ] + br i1 %t100, label %then179, label %endif181 +then179: + call void @finch.main.usage() + br label %endif181 +endif181: + %t101 = load { ptr, i64, i64 }, ptr %a77 + %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t102, ptr %a103 + store i1 false, ptr %a104 + store i1 false, ptr %a105 + store i1 false, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.162, i64 0, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.163, i64 3, i64 0 }, ptr %a108 + store { ptr, i64, i64 } zeroinitializer, ptr %a109 + store { ptr, i64, i64 } zeroinitializer, ptr %a110 + store { ptr, i64, i64 } zeroinitializer, ptr %a111 + store { ptr, i64, i64 } zeroinitializer, ptr %a112 + store { ptr, i64, i64 } zeroinitializer, ptr %a113 + store i64 3, ptr %a114 + br label %while.cond182 +while.cond182: + %t115 = load i64, ptr %a114 + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t117 = load i64, ptr %t116 + %t118 = icmp slt i64 %t115, %t117 + br i1 %t118, label %while.body183, label %while.end184 +while.body183: + %t119 = load i64, ptr %a114 + %t120 = load { ptr, i64, i64 }, ptr %a1 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 %t119, %t121 + br i1 %t122, label %range185, label %inrange186 +range185: + call void @finch_panic_index(ptr @.str.164, i64 161, i64 %t119, i64 %t121) + unreachable +inrange186: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 + %t125 = load { ptr, i64, i64 }, ptr %t124 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + store { ptr, i64, i64 } %t128, ptr %a129 + %t130 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t130, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.165, i64 3, i64 0 }, ptr %a132 + %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) + %t134 = icmp ne i32 %t133, 0 + br label %logic.from187 +logic.from187: + br i1 %t134, label %logic.rhs188, label %logic.end189 +logic.rhs188: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t136 = load i64, ptr %t135 + %t137 = icmp sgt i64 %t136, 0 + br label %logic.rend190 +logic.rend190: + br label %logic.end189 +logic.end189: + %t138 = phi i1 [ false, %logic.from187 ], [ %t137, %logic.rend190 ] + br i1 %t138, label %then191, label %else192 +then191: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t140 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t140, ptr %a141 + call void @finch_str_copy(ptr %a142, ptr %a141) + %t143 = load { ptr, i64, i64 }, ptr %a142 + %t144 = load i64, ptr %t139 + %t145 = add i64 %t144, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t145, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t146 = load ptr, ptr %a113 + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t144 + store { ptr, i64, i64 } %t143, ptr %t147 + store i64 %t145, ptr %t139 + br label %endif193 +else192: + %t148 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t148, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.166, i64 2, i64 0 }, ptr %a150 + %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) + %t152 = icmp ne i32 %t151, 0 + br label %logic.from194 +logic.from194: + br i1 %t152, label %logic.rhs195, label %logic.end196 +logic.rhs195: + %t153 = load i64, ptr %a114 + %t154 = add i64 %t153, 1 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = icmp slt i64 %t154, %t156 + br label %logic.rend197 +logic.rend197: + br label %logic.end196 +logic.end196: + %t158 = phi i1 [ false, %logic.from194 ], [ %t157, %logic.rend197 ] + br label %logic.from198 +logic.from198: + br i1 %t158, label %logic.rhs199, label %logic.end200 +logic.rhs199: + %t159 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.167, i64 5, i64 0 }, ptr %a161 + %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) + %t163 = icmp ne i32 %t162, 0 + br label %logic.rend201 +logic.rend201: + br label %logic.end200 +logic.end200: + %t164 = phi i1 [ false, %logic.from198 ], [ %t163, %logic.rend201 ] + br i1 %t164, label %then202, label %else203 +then202: + %t165 = load i64, ptr %a114 + %t166 = add i64 %t165, 1 + %t167 = load { ptr, i64, i64 }, ptr %a1 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range205, label %inrange206 +range205: + call void @finch_panic_index(ptr @.str.168, i64 165, i64 %t166, i64 %t168) + unreachable +inrange206: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 + %t172 = load { ptr, i64, i64 }, ptr %t171 + store { ptr, i64, i64 } %t172, ptr %a173 + call void @finch_str_copy(ptr %a174, ptr %a173) + %t175 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t175, ptr %a103 + store i1 true, ptr %a104 + %t176 = load i64, ptr %a114 + %t177 = add i64 %t176, 1 + store i64 %t177, ptr %a114 + br label %endif204 +else203: + %t178 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t178, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.169, i64 8, i64 0 }, ptr %a180 + %t181 = call i32 @finch_str_eq(ptr %a179, ptr %a180) + %t182 = icmp ne i32 %t181, 0 + br label %logic.from207 +logic.from207: + br i1 %t182, label %logic.rhs208, label %logic.end209 +logic.rhs208: + %t183 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.170, i64 5, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend210 +logic.rend210: + br label %logic.end209 +logic.end209: + %t188 = phi i1 [ false, %logic.from207 ], [ %t187, %logic.rend210 ] + br i1 %t188, label %then211, label %else212 +then211: + store i1 true, ptr %a105 + br label %endif213 +else212: + %t189 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.171, i64 3, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br i1 %t193, label %then214, label %else215 +then214: + 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 %logic.from242 +logic.from242: + br i1 %t277, label %logic.rhs243, label %logic.end244 +logic.rhs243: + %t278 = load i64, ptr %a114 + %t279 = add i64 %t278, 1 + %t280 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t281 = load i64, ptr %t280 + %t282 = icmp slt i64 %t279, %t281 + br label %logic.rend245 +logic.rend245: + br label %logic.end244 +logic.end244: + %t283 = phi i1 [ false, %logic.from242 ], [ %t282, %logic.rend245 ] + br i1 %t283, label %then246, label %else247 +then246: + %t284 = load i64, ptr %a114 + %t285 = add i64 %t284, 1 + %t286 = load { ptr, i64, i64 }, ptr %a1 + %t287 = extractvalue { ptr, i64, i64 } %t286, 1 + %t288 = icmp uge i64 %t285, %t287 + br i1 %t288, label %range249, label %inrange250 +range249: + call void @finch_panic_index(ptr @.str.181, i64 181, i64 %t285, i64 %t287) + unreachable +inrange250: + %t289 = extractvalue { ptr, i64, i64 } %t286, 0 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i64 %t285 + %t291 = load { ptr, i64, i64 }, ptr %t290 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.183, i64 1, i64 0 }, ptr %a294 + call void @finch_str_split(ptr %a295, ptr %a292, ptr %a294) + %t296 = load { ptr, i64, i64 }, ptr %a295 + store { ptr, i64, i64 } %t296, ptr %a297 + %t298 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 + %t299 = load { ptr, i64, i64 }, ptr %a297 + %t300 = extractvalue { ptr, i64, i64 } %t299, 1 + %t301 = icmp uge i64 0, %t300 + br i1 %t301, label %range251, label %inrange252 +range251: + call void @finch_panic_index(ptr @.str.184, i64 182, i64 0, i64 %t300) + unreachable +inrange252: + %t302 = extractvalue { ptr, i64, i64 } %t299, 0 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i64 0 + %t304 = load { ptr, i64, i64 }, ptr %t303 + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch_str_copy(ptr %a306, ptr %a305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + %t308 = load i64, ptr %t298 + %t309 = add i64 %t308, 1 + call void @finch_arr_reserve(ptr %a111, i64 %t309, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t310 = load ptr, ptr %a111 + %t311 = getelementptr inbounds { ptr, i64, i64 }, ptr %t310, i64 %t308 + store { ptr, i64, i64 } %t307, ptr %t311 + store i64 %t309, ptr %t298 + %t312 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 + %t313 = load { ptr, i64, i64 }, ptr %a297 + %t314 = extractvalue { ptr, i64, i64 } %t313, 1 + %t315 = icmp uge i64 1, %t314 + br i1 %t315, label %range253, label %inrange254 +range253: + call void @finch_panic_index(ptr @.str.185, i64 183, i64 1, i64 %t314) + unreachable +inrange254: + %t316 = extractvalue { ptr, i64, i64 } %t313, 0 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 1 + %t318 = load { ptr, i64, i64 }, ptr %t317 + store { ptr, i64, i64 } %t318, ptr %a319 + call void @finch_str_copy(ptr %a320, ptr %a319) + %t321 = load { ptr, i64, i64 }, ptr %a320 + %t322 = load i64, ptr %t312 + %t323 = add i64 %t322, 1 + call void @finch_arr_reserve(ptr %a112, i64 %t323, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t324 = load ptr, ptr %a112 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i64 %t322 + store { ptr, i64, i64 } %t321, ptr %t325 + store i64 %t323, ptr %t312 + %t326 = load i64, ptr %a114 + %t327 = add i64 %t326, 1 + store i64 %t327, ptr %a114 + br label %endif248 +else247: + %t328 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a330 + %t331 = call i32 @finch_str_eq(ptr %a329, ptr %a330) + %t332 = icmp ne i32 %t331, 0 + br i1 %t332, label %then255, label %else256 +then255: + store i1 true, ptr %a106 + br label %endif257 +else256: + %t333 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t333, ptr %a334 + store { ptr, i64, i64 } { ptr @.str.187, i64 8, i64 0 }, ptr %a335 + %t336 = call i32 @finch_str_eq(ptr %a334, ptr %a335) + %t337 = icmp ne i32 %t336, 0 + br label %logic.from258 +logic.from258: + br i1 %t337, label %logic.rhs259, label %logic.end260 +logic.rhs259: + %t338 = load i64, ptr %a114 + %t339 = add i64 %t338, 1 + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t341 = load i64, ptr %t340 + %t342 = icmp slt i64 %t339, %t341 + br label %logic.rend261 +logic.rend261: + br label %logic.end260 +logic.end260: + %t343 = phi i1 [ false, %logic.from258 ], [ %t342, %logic.rend261 ] + br i1 %t343, label %then262, label %else263 +then262: + %t344 = load i64, ptr %a114 + %t345 = add i64 %t344, 1 + %t346 = load { ptr, i64, i64 }, ptr %a1 + %t347 = extractvalue { ptr, i64, i64 } %t346, 1 + %t348 = icmp uge i64 %t345, %t347 + br i1 %t348, label %range265, label %inrange266 +range265: + call void @finch_panic_index(ptr @.str.188, i64 188, i64 %t345, i64 %t347) + unreachable +inrange266: + %t349 = extractvalue { ptr, i64, i64 } %t346, 0 + %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i64 %t345 + %t351 = load { ptr, i64, i64 }, ptr %t350 + store { ptr, i64, i64 } %t351, ptr %a352 + call void @finch_str_copy(ptr %a353, ptr %a352) + %t354 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t354, ptr %a107 + %t355 = load i64, ptr %a114 + %t356 = add i64 %t355, 1 + store i64 %t356, ptr %a114 + br label %endif264 +else263: + %t357 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t357, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.189, i64 3, i64 0 }, ptr %a359 + %t360 = call i32 @finch_str_eq(ptr %a358, ptr %a359) + %t361 = icmp ne i32 %t360, 0 + br i1 %t361, label %then267, label %else268 +then267: + %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t363 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t363, ptr %a364 + call void @finch_str_copy(ptr %a365, ptr %a364) + %t366 = load { ptr, i64, i64 }, ptr %a365 + %t367 = load i64, ptr %t362 + %t368 = add i64 %t367, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t368, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t369 = load ptr, ptr %a113 + %t370 = getelementptr inbounds { ptr, i64, i64 }, ptr %t369, i64 %t367 + store { ptr, i64, i64 } %t366, ptr %t370 + store i64 %t368, ptr %t362 + br label %endif269 +else268: + call void @finch.main.usage() + br label %endif269 +endif269: + br label %endif264 +endif264: + br label %endif257 +endif257: + br label %endif248 +endif248: + br label %endif239 +endif239: + br label %endif232 +endif232: + br label %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 +then314: + %t535 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 5 + %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 + %t537 = load { ptr, i64, i64 }, ptr %a531 + store { ptr, i64, i64 } %t537, ptr %a538 + call void @finch_str_copy(ptr %a539, ptr %a538) + %t540 = load { ptr, i64, i64 }, ptr %a539 + %t541 = load i64, ptr %t536 + %t542 = add i64 %t541, 1 + call void @finch_arr_reserve(ptr %t535, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t543 = load ptr, ptr %t535 + %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i64 %t541 + store { ptr, i64, i64 } %t540, ptr %t544 + store i64 %t542, ptr %t536 + br label %endif316 +endif316: + br label %each.step312 +each.step312: + %t545 = load i64, ptr %a523 + %t546 = add i64 %t545, 1 + store i64 %t546, ptr %a523 + br label %each.cond310 +each.end313: + %t547 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.main.load(ptr %a433, { ptr, i64, i64 } %t547, { ptr, i64, i64 } { ptr @.str.210, i64 0, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a548 + store { ptr, i64, i64 } zeroinitializer, ptr %a549 + %t550 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t550, ptr %a551 + call void @finch.copy.arr_str(ptr %a552, ptr %a551) + %t553 = load { ptr, i64, i64 }, ptr %a552 + store { ptr, i64, i64 } %t553, ptr %a554 + %t555 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t555, ptr %a556 + call void @finch.copy.arr_str(ptr %a557, ptr %a556) + %t558 = load { ptr, i64, i64 }, ptr %a557 + store { ptr, i64, i64 } %t558, ptr %a559 + %t560 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 + store i64 0, ptr %a561 + br label %each.cond317 +each.cond317: + %t562 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + %t563 = load i64, ptr %t562 + %t564 = load i64, ptr %a561 + %t565 = icmp slt i64 %t564, %t563 + br i1 %t565, label %each.body318, label %each.end320 +each.body318: + %t566 = load ptr, ptr %t560 + %t567 = getelementptr inbounds %S.ast.Program, ptr %t566, i64 %t564 + %t568 = load %S.ast.Program, ptr %t567 + store %S.ast.Program %t568, ptr %a569 + %t570 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 1 + %t571 = load { ptr, i64, i64 }, ptr %t570 + %t572 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t571) + store { ptr, i64, i64 } %t572, ptr %a573 + %t574 = getelementptr inbounds { ptr, i64, i64 }, ptr %a554, i32 0, i32 1 + %t575 = load { ptr, i64, i64 }, ptr %a573 + store i64 -1, ptr %a576 + %t577 = load i64, ptr %t574 + %t578 = load ptr, ptr %a554 + store i64 0, ptr %a579 + br label %find.cond321 +find.cond321: + %t580 = load i64, ptr %a579 + %t581 = icmp slt i64 %t580, %t577 + br i1 %t581, label %find.body322, label %find.end325 +find.body322: + %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i64 %t580 + %t583 = load { ptr, i64, i64 }, ptr %t582 + store { ptr, i64, i64 } %t583, ptr %a584 + store { ptr, i64, i64 } %t575, ptr %a585 + %t586 = call i32 @finch_str_eq(ptr %a584, ptr %a585) + %t587 = icmp ne i32 %t586, 0 + br i1 %t587, label %find.hit323, label %find.next324 +find.hit323: + store i64 %t580, ptr %a576 + br label %find.end325 +find.next324: + %t588 = add i64 %t580, 1 + store i64 %t588, ptr %a579 + br label %find.cond321 +find.end325: + %t589 = load i64, ptr %a576 + %t590 = icmp sge i64 %t589, 0 + %t591 = xor i1 %t590, true + br i1 %t591, label %then326, label %endif328 +then326: + %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %a554, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %a573 + store { ptr, i64, i64 } %t593, ptr %a594 + call void @finch_str_copy(ptr %a595, ptr %a594) + %t596 = load { ptr, i64, i64 }, ptr %a595 + %t597 = load i64, ptr %t592 + %t598 = add i64 %t597, 1 + call void @finch_arr_reserve(ptr %a554, i64 %t598, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t599 = load ptr, ptr %a554 + %t600 = getelementptr inbounds { ptr, i64, i64 }, ptr %t599, i64 %t597 + store { ptr, i64, i64 } %t596, ptr %t600 + store i64 %t598, ptr %t592 + br label %endif328 +endif328: + %t601 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i32 0, i32 1 + %t603 = load i64, ptr %t602 + store i64 0, ptr %a604 + br label %for.cond329 +for.cond329: + %t605 = load i64, ptr %a604 + %t606 = icmp slt i64 %t605, %t603 + br i1 %t606, label %for.body330, label %for.end332 +for.body330: + %t607 = getelementptr inbounds { ptr, i64, i64 }, ptr %a549, i32 0, i32 1 + %t608 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t609 = load i64, ptr %a604 + %t610 = load { ptr, i64, i64 }, ptr %t608 + %t611 = extractvalue { ptr, i64, i64 } %t610, 1 + %t612 = icmp uge i64 %t609, %t611 + br i1 %t612, label %range333, label %inrange334 +range333: + call void @finch_panic_index(ptr @.str.211, i64 244, i64 %t609, i64 %t611) + unreachable +inrange334: + %t613 = extractvalue { ptr, i64, i64 } %t610, 0 + %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t609 + %t615 = load { ptr, i64, i64 }, ptr %t614 + store i64 -1, ptr %a616 + %t617 = load i64, ptr %t607 + %t618 = load ptr, ptr %a549 + store i64 0, ptr %a619 + br label %find.cond335 +find.cond335: + %t620 = load i64, ptr %a619 + %t621 = icmp slt i64 %t620, %t617 + br i1 %t621, label %find.body336, label %find.end339 +find.body336: + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %t618, i64 %t620 + %t623 = load { ptr, i64, i64 }, ptr %t622 + store { ptr, i64, i64 } %t623, ptr %a624 + store { ptr, i64, i64 } %t615, ptr %a625 + %t626 = call i32 @finch_str_eq(ptr %a624, ptr %a625) + %t627 = icmp ne i32 %t626, 0 + br i1 %t627, label %find.hit337, label %find.next338 +find.hit337: + store i64 %t620, ptr %a616 + br label %find.end339 +find.next338: + %t628 = add i64 %t620, 1 + store i64 %t628, ptr %a619 + br label %find.cond335 +find.end339: + %t629 = load i64, ptr %a616 + %t630 = icmp sge i64 %t629, 0 + %t631 = xor i1 %t630, true + br i1 %t631, label %then340, label %endif342 +then340: + %t632 = getelementptr inbounds { ptr, i64, i64 }, ptr %a549, i32 0, i32 1 + %t633 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t634 = load i64, ptr %a604 + %t635 = load { ptr, i64, i64 }, ptr %t633 + %t636 = extractvalue { ptr, i64, i64 } %t635, 1 + %t637 = icmp uge i64 %t634, %t636 + br i1 %t637, label %range343, label %inrange344 +range343: + call void @finch_panic_index(ptr @.str.212, i64 245, i64 %t634, i64 %t636) + unreachable +inrange344: + %t638 = extractvalue { ptr, i64, i64 } %t635, 0 + %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t634 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } %t640, ptr %a641 + call void @finch_str_copy(ptr %a642, ptr %a641) + %t643 = load { ptr, i64, i64 }, ptr %a642 + %t644 = load i64, ptr %t632 + %t645 = add i64 %t644, 1 + call void @finch_arr_reserve(ptr %a549, i64 %t645, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t646 = load ptr, ptr %a549 + %t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t644 + store { ptr, i64, i64 } %t643, ptr %t647 + store i64 %t645, ptr %t632 + %t648 = getelementptr inbounds { ptr, i64, i64 }, ptr %a548, i32 0, i32 1 + %t649 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t650 = load i64, ptr %a604 + %t651 = load { ptr, i64, i64 }, ptr %t649 + %t652 = extractvalue { ptr, i64, i64 } %t651, 1 + %t653 = icmp uge i64 %t650, %t652 + br i1 %t653, label %range345, label %inrange346 +range345: + call void @finch_panic_index(ptr @.str.213, i64 246, i64 %t650, i64 %t652) + unreachable +inrange346: + %t654 = extractvalue { ptr, i64, i64 } %t651, 0 + %t655 = getelementptr inbounds { ptr, i64, i64 }, ptr %t654, i64 %t650 + %t656 = load { ptr, i64, i64 }, ptr %t655 + store { ptr, i64, i64 } %t656, ptr %a657 + call void @finch_str_copy(ptr %a658, ptr %a657) + %t659 = load { ptr, i64, i64 }, ptr %a658 + %t660 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t659, 0 + %t661 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 4 + %t662 = load i64, ptr %a604 + %t663 = load { ptr, i64, i64 }, ptr %t661 + %t664 = extractvalue { ptr, i64, i64 } %t663, 1 + %t665 = icmp uge i64 %t662, %t664 + br i1 %t665, label %range347, label %inrange348 +range347: + call void @finch_panic_index(ptr @.str.214, i64 246, i64 %t662, i64 %t664) + unreachable +inrange348: + %t666 = extractvalue { ptr, i64, i64 } %t663, 0 + %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t666, i64 %t662 + %t668 = load { ptr, i64, i64 }, ptr %t667 + store { ptr, i64, i64 } %t668, ptr %a669 + call void @finch_str_copy(ptr %a670, ptr %a669) + %t671 = load { ptr, i64, i64 }, ptr %a670 + %t672 = insertvalue %S.cimport.Header %t660, { ptr, i64, i64 } %t671, 1 + %t673 = load i64, ptr %t648 + %t674 = add i64 %t673, 1 + call void @finch_arr_reserve(ptr %a548, i64 %t674, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) + %t675 = load ptr, ptr %a548 + %t676 = getelementptr inbounds %S.cimport.Header, ptr %t675, i64 %t673 + store %S.cimport.Header %t672, ptr %t676 + store i64 %t674, ptr %t648 + br label %endif342 +endif342: + br label %for.step331 +for.step331: + %t677 = load i64, ptr %a604 + %t678 = add i64 %t677, 1 + store i64 %t678, ptr %a604 + br label %for.cond329 +for.end332: + %t679 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 5 + store i64 0, ptr %a680 + br label %each.cond349 +each.cond349: + %t681 = getelementptr inbounds { ptr, i64, i64 }, ptr %t679, i32 0, i32 1 + %t682 = load i64, ptr %t681 + %t683 = load i64, ptr %a680 + %t684 = icmp slt i64 %t683, %t682 + br i1 %t684, label %each.body350, label %each.end352 +each.body350: + %t685 = load ptr, ptr %t679 + %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i64 %t683 + %t687 = load { ptr, i64, i64 }, ptr %t686 + store { ptr, i64, i64 } %t687, ptr %a688 + %t689 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t689, ptr %a690 + store { ptr, i64, i64 } { ptr @.str.216, i64 2, i64 0 }, ptr %a692 + %t693 = call i32 @finch_str_ends(ptr %a690, ptr %a692) + %t694 = icmp ne i32 %t693, 0 + br label %logic.from353 +logic.from353: + br i1 %t694, label %logic.end355, label %logic.rhs354 +logic.rhs354: + %t695 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t695, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.218, i64 2, i64 0 }, ptr %a698 + %t699 = call i32 @finch_str_ends(ptr %a696, ptr %a698) + %t700 = icmp ne i32 %t699, 0 + br label %logic.rend356 +logic.rend356: + br label %logic.end355 +logic.end355: + %t701 = phi i1 [ true, %logic.from353 ], [ %t700, %logic.rend356 ] + br label %logic.from357 +logic.from357: + br i1 %t701, label %logic.end359, label %logic.rhs358 +logic.rhs358: + %t702 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t702, ptr %a703 + store { ptr, i64, i64 } { ptr @.str.220, i64 2, i64 0 }, ptr %a705 + %t706 = call i32 @finch_str_ends(ptr %a703, ptr %a705) + %t707 = icmp ne i32 %t706, 0 + br label %logic.rend360 +logic.rend360: + br label %logic.end359 +logic.end359: + %t708 = phi i1 [ true, %logic.from357 ], [ %t707, %logic.rend360 ] + br i1 %t708, label %then361, label %else362 +then361: + %t709 = getelementptr inbounds { ptr, i64, i64 }, ptr %a559, i32 0, i32 1 + %t710 = load { ptr, i64, i64 }, ptr %a573 + store { ptr, i64, i64 } %t710, ptr %a712 + store { ptr, i64, i64 } { ptr @.str.221, i64 1, i64 0 }, ptr %a713 + call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a711 + %t715 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t714, ptr %a717 + store { ptr, i64, i64 } %t715, ptr %a718 + call void @finch_str_concat(ptr %a716, ptr %a717, ptr %a718) + %t719 = load { ptr, i64, i64 }, ptr %a716 + %t720 = load i64, ptr %t709 + %t721 = add i64 %t720, 1 + call void @finch_arr_reserve(ptr %a559, i64 %t721, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t722 = load ptr, ptr %a559 + %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t720 + store { ptr, i64, i64 } %t719, ptr %t723 + store i64 %t721, ptr %t709 + br label %endif363 +else362: + %t724 = getelementptr inbounds { ptr, i64, i64 }, ptr %a559, i32 0, i32 1 + %t725 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t725, ptr %a726 + call void @finch_str_copy(ptr %a727, ptr %a726) + %t728 = load { ptr, i64, i64 }, ptr %a727 + %t729 = load i64, ptr %t724 + %t730 = add i64 %t729, 1 + call void @finch_arr_reserve(ptr %a559, i64 %t730, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t731 = load ptr, ptr %a559 + %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %t731, i64 %t729 + store { ptr, i64, i64 } %t728, ptr %t732 + store i64 %t730, ptr %t724 + br label %endif363 +endif363: + br label %each.step351 +each.step351: + %t733 = load i64, ptr %a680 + %t734 = add i64 %t733, 1 + store i64 %t734, ptr %a680 + br label %each.cond349 +each.end352: + br label %each.step319 +each.step319: + %t735 = load i64, ptr %a561 + %t736 = add i64 %t735, 1 + store i64 %t736, ptr %a561 + br label %each.cond317 +each.end320: + store { ptr, i64, i64 } { ptr @.str.222, i64 0, i64 0 }, ptr %a737 + %t738 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 5 + %t739 = load i1, ptr %t738 + br i1 %t739, label %then364, label %endif366 +then364: + %t740 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 0 + %t741 = load { ptr, i64, i64 }, ptr %t740 + store { ptr, i64, i64 } %t741, ptr %a742 + call void @finch_str_copy(ptr %a743, ptr %a742) + %t744 = load { ptr, i64, i64 }, ptr %a743 + store { ptr, i64, i64 } %t744, ptr %a737 + br label %endif366 +endif366: + %t745 = load { ptr, i64, i64 }, ptr %a548 + %t746 = load { ptr, i64, i64 }, ptr %a554 + %t747 = load { ptr, i64, i64 }, ptr %a737 + %t748 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 1 + %t749 = load i1, ptr %t748 + %t750 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 7 + %t751 = load { ptr, i64, i64 }, ptr %t750 + %t752 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t745, { ptr, i64, i64 } %t746, { ptr, i64, i64 } %t747, i1 %t749, { ptr, i64, i64 } %t751) + %t753 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 0 + %t754 = xor i1 %t753, true + %t755 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 2 + %t756 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 1 + br i1 %t754, label %or.failed367, label %or.ok368 +or.failed367: + store { ptr, i64, i64 } %t755, ptr %a757 + %t758 = load { ptr, i64, i64 }, ptr %a757 + %t759 = extractvalue { ptr, i64, i64 } %t758, 1 + %t760 = trunc i64 %t759 to i32 + %t761 = extractvalue { ptr, i64, i64 } %t758, 0 + %t762 = icmp eq ptr %t761, null + %t763 = select i1 %t762, ptr @.str.223, ptr %t761 + %t764 = call i32 (ptr, ...) @printf(ptr @.str.224, i32 %t760, ptr %t763) + %t765 = call i32 (ptr, ...) @printf(ptr @.str.225) + ret i64 1 +or.ok368: + store %S.cimport.CImports %t756, ptr %a766 + %t767 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 + %t768 = load { ptr, i64, i64 }, ptr %t767 + %t769 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 1 + %t770 = load { ptr, i64, i64 }, ptr %t769 + %t771 = load %S.cimport.CImports, ptr %a766 + %t772 = load i1, ptr %a105 + %t773 = insertvalue %S.gen.Options zeroinitializer, i1 %t772, 0 + %t774 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t774, ptr %a775 + store { ptr, i64, i64 } { ptr @.str.226, i64 5, i64 0 }, ptr %a776 + %t777 = call i32 @finch_str_eq(ptr %a775, ptr %a776) + %t778 = icmp ne i32 %t777, 0 + %t779 = insertvalue %S.gen.Options %t773, i1 %t778, 1 + %t780 = load i1, ptr %a106 + %t781 = insertvalue %S.gen.Options %t779, i1 %t780, 2 + %t782 = extractvalue { ptr, i64, i64 } { ptr @.str.227, i64 3, i64 0 }, 0 + %t783 = icmp eq ptr %t782, null + %t784 = select i1 %t783, ptr @.str.228, ptr %t782 + %t785 = call ptr @getenv(ptr %t784) + store { ptr, i64, i64 } zeroinitializer, ptr %a786 + call void @finch_str_from_c(ptr %a786, ptr %t785) + %t787 = load { ptr, i64, i64 }, ptr %a786 + store { ptr, i64, i64 } %t787, ptr %a788 + call void @finch_str_copy(ptr %a789, ptr %a788) + %t790 = load { ptr, i64, i64 }, ptr %a789 + %t791 = insertvalue %S.gen.Options %t781, { ptr, i64, i64 } %t790, 3 + %t792 = load %S.platform.Target, ptr %a375 + store %S.platform.Target %t792, ptr %a793 + call void @finch.copy.S_platform_Target(ptr %a794, ptr %a793) + %t795 = load %S.platform.Target, ptr %a794 + %t796 = insertvalue %S.gen.Options %t791, %S.platform.Target %t795, 4 + %t797 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t768, { ptr, i64, i64 } %t770, %S.cimport.CImports %t771, %S.gen.Options %t796) + store { ptr, i64, i64 } %t797, ptr %a798 + %t799 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t799, ptr %a800 + store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a801 + %t802 = call i32 @finch_str_eq(ptr %a800, ptr %a801) + %t803 = icmp ne i32 %t802, 0 + br label %logic.from369 +logic.from369: + br i1 %t803, label %logic.end371, label %logic.rhs370 +logic.rhs370: + %t804 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t804, ptr %a805 + store { ptr, i64, i64 } { ptr @.str.230, i64 5, i64 0 }, ptr %a806 + %t807 = call i32 @finch_str_eq(ptr %a805, ptr %a806) + %t808 = icmp ne i32 %t807, 0 + br label %logic.rend372 +logic.rend372: + br label %logic.end371 +logic.end371: + %t809 = phi i1 [ true, %logic.from369 ], [ %t808, %logic.rend372 ] + br i1 %t809, label %then373, label %endif375 +then373: + %t810 = load { ptr, i64, i64 }, ptr %a798 + %t811 = extractvalue { ptr, i64, i64 } %t810, 1 + %t812 = trunc i64 %t811 to i32 + %t813 = extractvalue { ptr, i64, i64 } %t810, 0 + %t814 = icmp eq ptr %t813, null + %t815 = select i1 %t814, ptr @.str.231, ptr %t813 + %t816 = call i32 (ptr, ...) @printf(ptr @.str.232, i32 %t812, ptr %t815) + %t817 = call i32 (ptr, ...) @printf(ptr @.str.233) + ret i64 0 +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 + store { ptr, i64, i64 } %t826, ptr %a827 + %t828 = getelementptr inbounds { ptr, i64, i64 }, ptr %a827, i32 0, i32 1 + %t829 = load i64, ptr %t828 + %t830 = icmp eq i64 %t829, 0 + br i1 %t830, label %then376, label %endif378 +then376: + %t831 = load { ptr, i64, i64 }, ptr %a1 + %t832 = extractvalue { ptr, i64, i64 } %t831, 1 + %t833 = icmp uge i64 0, %t832 + br i1 %t833, label %range379, label %inrange380 +range379: + call void @finch_panic_index(ptr @.str.236, i64 274, i64 0, i64 %t832) + unreachable +inrange380: + %t834 = extractvalue { ptr, i64, i64 } %t831, 0 + %t835 = getelementptr inbounds { ptr, i64, i64 }, ptr %t834, i64 0 + %t836 = load { ptr, i64, i64 }, ptr %t835 + %t837 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t836) + store { ptr, i64, i64 } %t837, ptr %a839 + store { ptr, i64, i64 } { ptr @.str.237, i64 22, i64 0 }, ptr %a840 + call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) + %t841 = load { ptr, i64, i64 }, ptr %a838 + store { ptr, i64, i64 } %t841, ptr %a827 + br label %endif378 +endif378: + %t842 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t842, ptr %a843 + %t844 = call i32 @finch_file_exists(ptr %a843) + %t845 = icmp ne i32 %t844, 0 + %t846 = xor i1 %t845, true + br i1 %t846, label %then381, label %endif383 +then381: + %t847 = load { ptr, i64, i64 }, ptr %a1 + %t848 = extractvalue { ptr, i64, i64 } %t847, 1 + %t849 = icmp uge i64 0, %t848 + br i1 %t849, label %range384, label %inrange385 +range384: + call void @finch_panic_index(ptr @.str.238, i64 277, i64 0, i64 %t848) + unreachable +inrange385: + %t850 = extractvalue { ptr, i64, i64 } %t847, 0 + %t851 = getelementptr inbounds { ptr, i64, i64 }, ptr %t850, i64 0 + %t852 = load { ptr, i64, i64 }, ptr %t851 + %t853 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t852) + store { ptr, i64, i64 } %t853, ptr %a855 + store { ptr, i64, i64 } { ptr @.str.239, i64 19, i64 0 }, ptr %a856 + call void @finch_str_concat(ptr %a854, ptr %a855, ptr %a856) + %t857 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t857, ptr %a827 + br label %endif383 +endif383: + %t858 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t858, ptr %a859 + %t860 = call i32 @finch_file_exists(ptr %a859) + %t861 = icmp ne i32 %t860, 0 + %t862 = xor i1 %t861, true + br label %logic.from386 +logic.from386: + br i1 %t862, label %logic.rhs387, label %logic.end388 +logic.rhs387: + store { ptr, i64, i64 } { ptr @.str.240, i64 18, i64 0 }, ptr %a863 + %t864 = call i32 @finch_file_exists(ptr %a863) + %t865 = icmp ne i32 %t864, 0 + br label %logic.rend389 +logic.rend389: + br label %logic.end388 +logic.end388: + %t866 = phi i1 [ false, %logic.from386 ], [ %t865, %logic.rend389 ] + br i1 %t866, label %then390, label %endif392 +then390: + store { ptr, i64, i64 } { ptr @.str.241, i64 18, i64 0 }, ptr %a827 + br label %endif392 +endif392: + %t867 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t867, ptr %a868 + %t869 = call i32 @finch_file_exists(ptr %a868) + %t870 = icmp ne i32 %t869, 0 + %t871 = xor i1 %t870, true + br i1 %t871, label %then393, label %endif395 +then393: + %t872 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 1 + %t873 = trunc i64 %t872 to i32 + %t874 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 0 + %t875 = icmp eq ptr %t874, null + %t876 = select i1 %t875, ptr @.str.243, ptr %t874 + %t877 = call i32 (ptr, ...) @printf(ptr @.str.244, i32 %t873, ptr %t876) + %t878 = call i32 (ptr, ...) @printf(ptr @.str.245) + ret i64 1 +endif395: + store { ptr, i64, i64 } { ptr @.str.246, i64 0, i64 0 }, ptr %a879 + %t880 = load i1, ptr %a105 + br i1 %t880, label %then396, label %endif398 +then396: + store { ptr, i64, i64 } { ptr @.str.247, i64 6, i64 0 }, ptr %a879 + br label %endif398 +endif398: + %t881 = load i1, ptr %a106 + br i1 %t881, label %then399, label %endif401 +then399: + %t882 = load { ptr, i64, i64 }, ptr %a879 + store { ptr, i64, i64 } %t882, ptr %a884 + store { ptr, i64, i64 } { ptr @.str.248, i64 3, i64 0 }, ptr %a885 + call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) + %t886 = load { ptr, i64, i64 }, ptr %a883 + store { ptr, i64, i64 } %t886, ptr %a879 + br label %endif401 +endif401: + %t887 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t887, ptr %a888 + call void @finch_str_copy(ptr %a889, ptr %a888) + %t890 = load { ptr, i64, i64 }, ptr %a889 + %t891 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t890, 0 + %t892 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t892, ptr %a893 + call void @finch_str_copy(ptr %a894, ptr %a893) + %t895 = load { ptr, i64, i64 }, ptr %a894 + %t896 = insertvalue %S.linker.Build %t891, { ptr, i64, i64 } %t895, 1 + %t897 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t897, ptr %a898 + call void @finch_str_copy(ptr %a899, ptr %a898) + %t900 = load { ptr, i64, i64 }, ptr %a899 + %t901 = insertvalue %S.linker.Build %t896, { ptr, i64, i64 } %t900, 2 + %t902 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } %t902, ptr %a903 + call void @finch_str_copy(ptr %a904, ptr %a903) + %t905 = load { ptr, i64, i64 }, ptr %a904 + %t906 = insertvalue %S.linker.Build %t901, { ptr, i64, i64 } %t905, 3 + %t907 = load { ptr, i64, i64 }, ptr %a879 + store { ptr, i64, i64 } %t907, ptr %a908 + call void @finch_str_copy(ptr %a909, ptr %a908) + %t910 = load { ptr, i64, i64 }, ptr %a909 + %t911 = insertvalue %S.linker.Build %t906, { ptr, i64, i64 } %t910, 4 + %t912 = load i1, ptr %a105 + %t913 = insertvalue %S.linker.Build %t911, i1 %t912, 5 + %t914 = load { ptr, i64, i64 }, ptr %a559 + store { ptr, i64, i64 } %t914, ptr %a915 + call void @finch.copy.arr_str(ptr %a916, ptr %a915) + %t917 = load { ptr, i64, i64 }, ptr %a916 + %t918 = insertvalue %S.linker.Build %t913, { ptr, i64, i64 } %t917, 6 + %t919 = load %S.platform.Target, ptr %a375 + %t920 = load %S.cimport.CImports, ptr %a766 + %t921 = call i64 @finch.linker.build(%S.linker.Build %t918, %S.platform.Target %t919, %S.cimport.CImports %t920) + %t922 = icmp ne i64 %t921, 0 + br i1 %t922, label %then402, label %endif404 +then402: + ret i64 1 +endif404: + %t923 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t923, ptr %a924 + store { ptr, i64, i64 } { ptr @.str.249, i64 3, i64 0 }, ptr %a925 + %t926 = call i32 @finch_str_eq(ptr %a924, ptr %a925) + %t927 = icmp ne i32 %t926, 0 + br i1 %t927, label %then405, label %endif407 +then405: + store { ptr, i64, i64 } zeroinitializer, ptr %a928 + store i64 0, ptr %a929 + br label %each.cond408 +each.cond408: + %t930 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t931 = load i64, ptr %t930 + %t932 = load i64, ptr %a929 + %t933 = icmp slt i64 %t932, %t931 + br i1 %t933, label %each.body409, label %each.end411 +each.body409: + %t934 = load ptr, ptr %a113 + %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i64 %t932 + %t936 = load { ptr, i64, i64 }, ptr %t935 + store { ptr, i64, i64 } %t936, ptr %a937 + %t938 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 + %t939 = load { ptr, i64, i64 }, ptr %a937 + %t940 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t939) + %t941 = load i64, ptr %t938 + %t942 = add i64 %t941, 1 + call void @finch_arr_reserve(ptr %a928, i64 %t942, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t943 = load ptr, ptr %a928 + %t944 = getelementptr inbounds { ptr, i64, i64 }, ptr %t943, i64 %t941 + store { ptr, i64, i64 } %t940, ptr %t944 + store i64 %t942, ptr %t938 + br label %each.step410 +each.step410: + %t945 = load i64, ptr %a929 + %t946 = add i64 %t945, 1 + store i64 %t946, ptr %a929 + br label %each.cond408 +each.end411: + %t947 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 8 + %t948 = load { ptr, i64, i64 }, ptr %t947 + %t949 = load { ptr, i64, i64 }, ptr %a103 + %t950 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t949) + store { ptr, i64, i64 } %t948, ptr %a952 + store { ptr, i64, i64 } %t950, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + %t954 = load { ptr, i64, i64 }, ptr %a951 + store { ptr, i64, i64 } %t954, ptr %a956 + store { ptr, i64, i64 } { ptr @.str.250, i64 1, i64 0 }, ptr %a957 + call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957) + %t958 = load { ptr, i64, i64 }, ptr %a955 + %t959 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.251, i64 1, i64 0 }, ptr %a960 + call void @finch_str_join(ptr %a961, ptr %a928, ptr %a960) + %t962 = load { ptr, i64, i64 }, ptr %a961 + store { ptr, i64, i64 } %t958, ptr %a964 + store { ptr, i64, i64 } %t962, ptr %a965 + call void @finch_str_concat(ptr %a963, ptr %a964, ptr %a965) + %t966 = load { ptr, i64, i64 }, ptr %a963 + store { ptr, i64, i64 } %t966, ptr %a968 + call void @finch_str_copy(ptr %a967, ptr %a968) + %t969 = call i64 @finch_shell(ptr %a967) + store i64 %t969, ptr %a970 + %t971 = load { ptr, i64, i64 }, ptr %a103 + %t972 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t971) + store { ptr, i64, i64 } { ptr @.str.252, i64 6, i64 0 }, ptr %a974 + store { ptr, i64, i64 } %t972, ptr %a975 + call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) + %t976 = load { ptr, i64, i64 }, ptr %a973 + store { ptr, i64, i64 } %t976, ptr %a978 + call void @finch_str_copy(ptr %a977, ptr %a978) + %t979 = call i64 @finch_shell(ptr %a977) + %t980 = load i64, ptr %a970 + ret i64 %t980 +endif407: + ret i64 0 +} + +define internal i1 @finch.lexer.isAlpha(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 97 + br label %logic.from412 +logic.from412: + br i1 %t3, label %logic.rhs413, label %logic.end414 +logic.rhs413: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 122 + br label %logic.rend415 +logic.rend415: + br label %logic.end414 +logic.end414: + %t6 = phi i1 [ false, %logic.from412 ], [ %t5, %logic.rend415 ] + br label %logic.from416 +logic.from416: + br i1 %t6, label %logic.end418, label %logic.rhs417 +logic.rhs417: + %t7 = load i8, ptr %a1 + %t8 = icmp uge i8 %t7, 65 + br label %logic.from419 +logic.from419: + br i1 %t8, label %logic.rhs420, label %logic.end421 +logic.rhs420: + %t9 = load i8, ptr %a1 + %t10 = icmp ule i8 %t9, 90 + br label %logic.rend422 +logic.rend422: + br label %logic.end421 +logic.end421: + %t11 = phi i1 [ false, %logic.from419 ], [ %t10, %logic.rend422 ] + br label %logic.rend423 +logic.rend423: + br label %logic.end418 +logic.end418: + %t12 = phi i1 [ true, %logic.from416 ], [ %t11, %logic.rend423 ] + br label %logic.from424 +logic.from424: + br i1 %t12, label %logic.end426, label %logic.rhs425 +logic.rhs425: + %t13 = load i8, ptr %a1 + %t14 = icmp eq i8 %t13, 95 + br label %logic.rend427 +logic.rend427: + br label %logic.end426 +logic.end426: + %t15 = phi i1 [ true, %logic.from424 ], [ %t14, %logic.rend427 ] + ret i1 %t15 +} + +define internal i1 @finch.lexer.isDigit(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 48 + br label %logic.from428 +logic.from428: + br i1 %t3, label %logic.rhs429, label %logic.end430 +logic.rhs429: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 57 + br label %logic.rend431 +logic.rend431: + br label %logic.end430 +logic.end430: + %t6 = phi i1 [ false, %logic.from428 ], [ %t5, %logic.rend431 ] + ret i1 %t6 +} + +define internal i1 @finch.lexer.isHex(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + 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: + %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: + %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: + %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: + %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 ] + ret i1 %t15 +} + +define internal i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca i64, align 16 + %a34 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.254, i64 6, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.255, 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 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 + store { ptr, i64, i64 } { ptr @.str.257, i64 5, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 + store { ptr, i64, i64 } { ptr @.str.258, 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 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 + store { ptr, i64, i64 } { ptr @.str.260, i64 5, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 + store { ptr, i64, i64 } { ptr @.str.261, 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 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 + store { ptr, i64, i64 } { ptr @.str.263, i64 5, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 + store { ptr, i64, i64 } { ptr @.str.264, 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 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 + store { ptr, i64, i64 } { ptr @.str.266, i64 4, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 + store { ptr, i64, i64 } { ptr @.str.267, 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 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 + store { ptr, i64, i64 } { ptr @.str.269, i64 2, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 + store { ptr, i64, i64 } { ptr @.str.270, 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 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 + store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 + store { ptr, i64, i64 } { ptr @.str.273, i64 6, i64 0 }, ptr %t24 + %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 + %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 + store { ptr, i64, i64 } %t27, ptr %a28 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 + %t30 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a31 + %t32 = load i64, ptr %t29 + %t33 = load ptr, ptr %a28 + store i64 0, ptr %a34 + br label %find.cond448 +find.cond448: + %t35 = load i64, ptr %a34 + %t36 = icmp slt i64 %t35, %t32 + br i1 %t36, label %find.body449, label %find.end452 +find.body449: + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t35 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + store { ptr, i64, i64 } %t30, ptr %a40 + %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) + %t42 = icmp ne i32 %t41, 0 + br i1 %t42, label %find.hit450, label %find.next451 +find.hit450: + store i64 %t35, ptr %a31 + br label %find.end452 +find.next451: + %t43 = add i64 %t35, 1 + store i64 %t43, ptr %a34 + br label %find.cond448 +find.end452: + %t44 = load i64, ptr %a31 + %t45 = icmp sge i64 %t44, 0 + ret i1 %t45 +} + +define internal void @finch.lexer.fail(ptr %p0, i64 %p1, i64 %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a4 = 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 + %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 + %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 + %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 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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) + unreachable +ok454: + %t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 1 + %t8 = load { ptr, i64, i64 }, ptr %t7 + store { ptr, i64, i64 } %t8, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.276, i64 1, i64 0 }, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + %t13 = load i64, ptr %a2 + 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) + %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 + 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) + ret void +} + +define internal i8 @finch.lexer.peek(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 %panic455, label %ok456 +panic455: + call void @finch_panic(ptr @.str.282, i64 46, ptr @.str.283) + unreachable +ok456: + %t5 = getelementptr inbounds %S.lexer.Lexer, ptr %t3, i32 0, i32 2 + %t6 = load i64, ptr %t5 + %t7 = load i64, ptr %a2 + %t8 = add i64 %t6, %t7 + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic457, label %ok458 +panic457: + call void @finch_panic(ptr @.str.284, i64 46, ptr @.str.285) + unreachable +ok458: + %t11 = getelementptr inbounds %S.lexer.Lexer, ptr %t9, i32 0, i32 0 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = icmp slt i64 %t8, %t13 + br i1 %t14, label %then459, label %endif461 +then459: + %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) + unreachable +ok463: + %t17 = getelementptr inbounds %S.lexer.Lexer, ptr %t15, i32 0, i32 0 + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic464, label %ok465 +panic464: + call void @finch_panic(ptr @.str.288, i64 47, ptr @.str.289) + unreachable +ok465: + %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 2 + %t21 = load i64, ptr %t20 + %t22 = load i64, ptr %a2 + %t23 = add i64 %t21, %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 %range466, label %inrange467 +range466: + call void @finch_panic_index(ptr @.str.290, i64 47, i64 %t23, i64 %t25) + unreachable +inrange467: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 + %t29 = load i8, ptr %t28 + ret i8 %t29 +endif461: + %t30 = trunc i64 0 to i8 + ret i8 %t30 +} + +define internal void @finch.lexer.advance(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a15 = alloca i8, align 16 + 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) + unreachable +ok469: + %t4 = getelementptr inbounds %S.lexer.Lexer, ptr %t2, i32 0, i32 0 + %t5 = load ptr, ptr %a1 + %t6 = icmp eq ptr %t5, null + br i1 %t6, label %panic470, label %ok471 +panic470: + call void @finch_panic(ptr @.str.293, i64 53, ptr @.str.294) + unreachable +ok471: + %t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 2 + %t8 = load i64, ptr %t7 + %t9 = load { ptr, i64, i64 }, ptr %t4 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range472, label %inrange473 +range472: + call void @finch_panic_index(ptr @.str.295, i64 53, i64 %t8, i64 %t10) + unreachable +inrange473: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds i8, ptr %t12, i64 %t8 + %t14 = load i8, ptr %t13 + store i8 %t14, ptr %a15 + %t16 = load i8, ptr %a15 + %t17 = icmp eq i8 %t16, 10 + br i1 %t17, label %then474, label %else475 +then474: + %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) + unreachable +ok478: + %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 3 + %t21 = load i64, ptr %t20 + %t22 = add i64 %t21, 1 + store i64 %t22, ptr %t20 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic479, label %ok480 +panic479: + call void @finch_panic(ptr @.str.298, i64 56, ptr @.str.299) + unreachable +ok480: + %t25 = getelementptr inbounds %S.lexer.Lexer, ptr %t23, i32 0, i32 4 + store i64 1, ptr %t25 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic481, label %ok482 +panic481: + call void @finch_panic(ptr @.str.300, i64 57, ptr @.str.301) + unreachable +ok482: + %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 + store i1 true, ptr %t28 + br label %endif476 +else475: + %t29 = load i8, ptr %a15 + %t30 = zext i8 %t29 to i64 + %t31 = and i64 %t30, 192 + %t32 = icmp ne i64 %t31, 128 + br i1 %t32, label %then483, label %endif485 +then483: + %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) + unreachable +ok487: + %t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 4 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t36, 1 + store i64 %t37, ptr %t35 + br label %endif485 +endif485: + br label %endif476 +endif476: + %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) + unreachable +ok489: + %t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2 + %t41 = load i64, ptr %t40 + %t42 = add i64 %t41, 1 + store i64 %t42, ptr %t40 + ret void +} + +define internal { ptr, i64, i64 } @finch.lexer.operator(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca i64, align 16 + %a57 = alloca i64, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 + %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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.307, i64 2, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.308, 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 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 + store { ptr, i64, i64 } { ptr @.str.310, i64 2, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 + store { ptr, i64, i64 } { ptr @.str.311, 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 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 + store { ptr, i64, i64 } { ptr @.str.313, i64 2, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 + store { ptr, i64, i64 } { ptr @.str.314, 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 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 + store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 + store { ptr, i64, i64 } { ptr @.str.317, 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 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 + store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 + store { ptr, i64, i64 } { ptr @.str.320, 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 + %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) + unreachable +ok491: + %t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 2 + %t27 = load i64, ptr %t26 + %t28 = add i64 %t27, 1 + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic492, label %ok493 +panic492: + call void @finch_panic(ptr @.str.324, i64 67, ptr @.str.325) + unreachable +ok493: + %t31 = getelementptr inbounds %S.lexer.Lexer, ptr %t29, i32 0, i32 0 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = icmp slt i64 %t28, %t33 + br i1 %t34, label %then494, label %endif496 +then494: + %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) + unreachable +ok498: + %t37 = getelementptr inbounds %S.lexer.Lexer, ptr %t35, i32 0, i32 0 + %t38 = load { ptr, i64, i64 }, ptr %t37 + store { ptr, i64, i64 } %t38, ptr %a39 + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic499, label %ok500 +panic499: + call void @finch_panic(ptr @.str.329, i64 68, ptr @.str.330) + unreachable +ok500: + %t43 = getelementptr inbounds %S.lexer.Lexer, ptr %t41, i32 0, i32 2 + %t44 = load i64, ptr %t43 + %t45 = load ptr, ptr %a1 + %t46 = icmp eq ptr %t45, null + br i1 %t46, label %panic501, label %ok502 +panic501: + call void @finch_panic(ptr @.str.331, i64 68, ptr @.str.332) + unreachable +ok502: + %t47 = getelementptr inbounds %S.lexer.Lexer, ptr %t45, i32 0, i32 2 + %t48 = load i64, ptr %t47 + %t49 = add i64 %t48, 2 + call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.328, i64 68) + %t50 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 + %t53 = load { ptr, i64, i64 }, ptr %a51 + store i64 -1, ptr %a54 + %t55 = load i64, ptr %t52 + %t56 = load ptr, ptr %a23 + store i64 0, ptr %a57 + br label %find.cond503 +find.cond503: + %t58 = load i64, ptr %a57 + %t59 = icmp slt i64 %t58, %t55 + br i1 %t59, label %find.body504, label %find.end507 +find.body504: + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i64 %t58 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + store { ptr, i64, i64 } %t53, ptr %a63 + %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) + %t65 = icmp ne i32 %t64, 0 + br i1 %t65, label %find.hit505, label %find.next506 +find.hit505: + store i64 %t58, ptr %a54 + br label %find.end507 +find.next506: + %t66 = add i64 %t58, 1 + store i64 %t66, ptr %a57 + br label %find.cond503 +find.end507: + %t67 = load i64, ptr %a54 + %t68 = icmp sge i64 %t67, 0 + br i1 %t68, label %then508, label %endif510 +then508: + %t69 = load { ptr, i64, i64 }, ptr %a51 + ret { ptr, i64, i64 } %t69 +endif510: + br label %endif496 +endif496: + store { ptr, i64, i64 } { ptr @.str.333, i64 22, i64 0 }, ptr %a70 + %t71 = load ptr, ptr %a1 + %t72 = icmp eq ptr %t71, null + br i1 %t72, label %panic511, label %ok512 +panic511: + call void @finch_panic(ptr @.str.334, i64 74, ptr @.str.335) + unreachable +ok512: + %t73 = getelementptr inbounds %S.lexer.Lexer, ptr %t71, i32 0, i32 0 + %t74 = load { ptr, i64, i64 }, ptr %t73 + store { ptr, i64, i64 } %t74, ptr %a75 + %t77 = load ptr, ptr %a1 + %t78 = icmp eq ptr %t77, null + br i1 %t78, label %panic513, label %ok514 +panic513: + call void @finch_panic(ptr @.str.337, i64 74, ptr @.str.338) + unreachable +ok514: + %t79 = getelementptr inbounds %S.lexer.Lexer, ptr %t77, i32 0, i32 2 + %t80 = load i64, ptr %t79 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic515, label %ok516 +panic515: + call void @finch_panic(ptr @.str.339, i64 74, ptr @.str.340) + unreachable +ok516: + %t83 = getelementptr inbounds %S.lexer.Lexer, ptr %t81, i32 0, i32 2 + %t84 = load i64, ptr %t83 + %t85 = add i64 %t84, 1 + call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.336, i64 74) + %t86 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t86, ptr %a87 + %t88 = load { ptr, i64, i64 }, ptr %a70 + store { ptr, i64, i64 } %t88, ptr %a89 + %t91 = load { ptr, i64, i64 }, ptr %a87 + 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: + %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 } +} + +define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i8, 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 + 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: + ret i8 10 +endif522: + %t5 = load i8, ptr %a2 + %t6 = icmp eq i8 %t5, 116 + br i1 %t6, label %then523, label %endif525 +then523: + ret i8 9 +endif525: + %t7 = load i8, ptr %a2 + %t8 = icmp eq i8 %t7, 114 + br i1 %t8, label %then526, label %endif528 +then526: + ret i8 13 +endif528: + %t9 = load i8, ptr %a2 + %t10 = icmp eq i8 %t9, 48 + br i1 %t10, label %then529, label %endif531 +then529: + %t11 = trunc i64 0 to i8 + ret i8 %t11 +endif531: + %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: + %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: + %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: + %t20 = load i8, ptr %a2 + ret i8 %t20 +endif542: + %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) + unreachable +ok544: + %t24 = getelementptr inbounds %S.lexer.Lexer, ptr %t22, i32 0, i32 3 + %t25 = load i64, ptr %t24 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic545, label %ok546 +panic545: + call void @finch_panic(ptr @.str.345, i64 97, ptr @.str.346) + unreachable +ok546: + %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 4 + %t29 = load i64, ptr %t28 + %t30 = sub i64 %t29, 1 + %t31 = load i8, ptr %a2 + call void @finch_str_from_char(ptr %a32, i8 signext %t31) + %t33 = load { ptr, i64, i64 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.347, i64 16, i64 0 }, ptr %a35 + store { ptr, i64, i64 } %t33, ptr %a36 + call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) + %t37 = load { ptr, i64, i64 }, ptr %a34 + call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t37) + %t38 = load i8, ptr %a2 + ret i8 %t38 +} + +define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lexer.Token, ptr %src + store %S.lexer.Token %t1, ptr %dst + %t2 = getelementptr inbounds %S.lexer.Token, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lexer.Token, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lexer.Token, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lexer.Token, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + ret void +} + +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.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: + ret void +} + +define internal { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca %S.lexer.Lexer, align 16 + %a18 = alloca ptr, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca i8, align 16 + %a98 = alloca i64, align 16 + %a103 = alloca i64, align 16 + %a169 = alloca %S.lexer.Token, align 16 + %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 + %a405 = alloca { ptr, i64, i64 }, align 16 + %a406 = alloca { ptr, i64, i64 }, align 16 + %a415 = alloca i8, 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 + %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 + %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 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = 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 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a590 = 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 + store { ptr, i64, i64 } %t3, ptr %a4 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + %t7 = insertvalue %S.lexer.Lexer zeroinitializer, { ptr, i64, i64 } %t6, 0 + %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 + %t12 = insertvalue %S.lexer.Lexer %t7, { ptr, i64, i64 } %t11, 1 + %t13 = insertvalue %S.lexer.Lexer %t12, i64 0, 2 + %t14 = insertvalue %S.lexer.Lexer %t13, i64 1, 3 + %t15 = insertvalue %S.lexer.Lexer %t14, i64 1, 4 + %t16 = insertvalue %S.lexer.Lexer %t15, i1 true, 5 + 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: + %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) + unreachable +ok551: + %t22 = getelementptr inbounds %S.lexer.Lexer, ptr %t20, i32 0, i32 2 + %t23 = load i64, ptr %t22 + %t24 = load ptr, ptr %a18 + %t25 = icmp eq ptr %t24, null + br i1 %t25, label %panic552, label %ok553 +panic552: + call void @finch_panic(ptr @.str.350, i64 105, ptr @.str.351) + unreachable +ok553: + %t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 0 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = icmp slt i64 %t23, %t28 + br i1 %t29, label %while.body548, label %while.end549 +while.body548: + %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) + unreachable +ok555: + %t32 = getelementptr inbounds %S.lexer.Lexer, ptr %t30, i32 0, i32 0 + %t33 = load ptr, ptr %a18 + %t34 = icmp eq ptr %t33, null + br i1 %t34, label %panic556, label %ok557 +panic556: + call void @finch_panic(ptr @.str.354, i64 106, ptr @.str.355) + unreachable +ok557: + %t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 2 + %t36 = load i64, ptr %t35 + %t37 = load { ptr, i64, i64 }, ptr %t32 + %t38 = extractvalue { ptr, i64, i64 } %t37, 1 + %t39 = icmp uge i64 %t36, %t38 + br i1 %t39, label %range558, label %inrange559 +range558: + call void @finch_panic_index(ptr @.str.356, i64 106, i64 %t36, i64 %t38) + unreachable +inrange559: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds i8, ptr %t40, i64 %t36 + %t42 = load i8, ptr %t41 + store i8 %t42, ptr %a43 + %t44 = load i8, ptr %a43 + %t45 = icmp eq i8 %t44, 32 + br label %logic.from560 +logic.from560: + br i1 %t45, label %logic.end562, label %logic.rhs561 +logic.rhs561: + %t46 = load i8, ptr %a43 + %t47 = icmp eq i8 %t46, 9 + br label %logic.rend563 +logic.rend563: + br label %logic.end562 +logic.end562: + %t48 = phi i1 [ true, %logic.from560 ], [ %t47, %logic.rend563 ] + br label %logic.from564 +logic.from564: + br i1 %t48, label %logic.end566, label %logic.rhs565 +logic.rhs565: + %t49 = load i8, ptr %a43 + %t50 = icmp eq i8 %t49, 10 + br label %logic.rend567 +logic.rend567: + br label %logic.end566 +logic.end566: + %t51 = phi i1 [ true, %logic.from564 ], [ %t50, %logic.rend567 ] + br label %logic.from568 +logic.from568: + br i1 %t51, label %logic.end570, label %logic.rhs569 +logic.rhs569: + %t52 = load i8, ptr %a43 + %t53 = icmp eq i8 %t52, 13 + br label %logic.rend571 +logic.rend571: + br label %logic.end570 +logic.end570: + %t54 = phi i1 [ true, %logic.from568 ], [ %t53, %logic.rend571 ] + br i1 %t54, label %then572, label %endif574 +then572: + %t55 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t55) + br label %while.cond547 +endif574: + %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: + %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: + %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) + unreachable +ok586: + %t64 = getelementptr inbounds %S.lexer.Lexer, ptr %t62, i32 0, i32 2 + %t65 = load i64, ptr %t64 + %t66 = load ptr, ptr %a18 + %t67 = icmp eq ptr %t66, null + br i1 %t67, label %panic587, label %ok588 +panic587: + call void @finch_panic(ptr @.str.359, i64 112, ptr @.str.360) + unreachable +ok588: + %t68 = getelementptr inbounds %S.lexer.Lexer, ptr %t66, i32 0, i32 0 + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = icmp slt i64 %t65, %t70 + br label %logic.from589 +logic.from589: + br i1 %t71, label %logic.rhs590, label %logic.end591 +logic.rhs590: + %t72 = load ptr, ptr %a18 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic592, label %ok593 +panic592: + call void @finch_panic(ptr @.str.361, i64 112, ptr @.str.362) + unreachable +ok593: + %t74 = getelementptr inbounds %S.lexer.Lexer, ptr %t72, i32 0, i32 0 + %t75 = load ptr, ptr %a18 + %t76 = icmp eq ptr %t75, null + br i1 %t76, label %panic594, label %ok595 +panic594: + call void @finch_panic(ptr @.str.363, i64 112, ptr @.str.364) + unreachable +ok595: + %t77 = getelementptr inbounds %S.lexer.Lexer, ptr %t75, i32 0, i32 2 + %t78 = load i64, ptr %t77 + %t79 = load { ptr, i64, i64 }, ptr %t74 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range596, label %inrange597 +range596: + call void @finch_panic_index(ptr @.str.365, i64 112, i64 %t78, i64 %t80) + unreachable +inrange597: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds i8, ptr %t82, i64 %t78 + %t84 = load i8, ptr %t83 + %t85 = icmp ne i8 %t84, 10 + br label %logic.rend598 +logic.rend598: + br label %logic.end591 +logic.end591: + %t86 = phi i1 [ false, %logic.from589 ], [ %t85, %logic.rend598 ] + br i1 %t86, label %while.body583, label %while.end584 +while.body583: + %t87 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t87) + br label %while.cond582 +while.end584: + br label %while.cond547 +endif581: + %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: + %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: + %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) + unreachable +ok607: + %t96 = getelementptr inbounds %S.lexer.Lexer, ptr %t94, i32 0, i32 3 + %t97 = load i64, ptr %t96 + store i64 %t97, ptr %a98 + %t99 = load ptr, ptr %a18 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic608, label %ok609 +panic608: + call void @finch_panic(ptr @.str.368, i64 119, ptr @.str.369) + unreachable +ok609: + %t101 = getelementptr inbounds %S.lexer.Lexer, ptr %t99, i32 0, i32 4 + %t102 = load i64, ptr %t101 + store i64 %t102, ptr %a103 + %t104 = load ptr, ptr %a18 + 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: + %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) + unreachable +ok614: + %t108 = getelementptr inbounds %S.lexer.Lexer, ptr %t106, i32 0, i32 2 + %t109 = load i64, ptr %t108 + %t110 = load ptr, ptr %a18 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic615, label %ok616 +panic615: + call void @finch_panic(ptr @.str.372, i64 122, ptr @.str.373) + unreachable +ok616: + %t112 = getelementptr inbounds %S.lexer.Lexer, ptr %t110, i32 0, i32 0 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 + %t114 = load i64, ptr %t113 + %t115 = icmp slt i64 %t109, %t114 + br label %logic.from617 +logic.from617: + br i1 %t115, label %logic.rhs618, label %logic.end619 +logic.rhs618: + %t116 = load ptr, ptr %a18 + %t117 = icmp eq ptr %t116, null + br i1 %t117, label %panic620, label %ok621 +panic620: + call void @finch_panic(ptr @.str.374, i64 122, ptr @.str.375) + unreachable +ok621: + %t118 = getelementptr inbounds %S.lexer.Lexer, ptr %t116, i32 0, i32 0 + %t119 = load ptr, ptr %a18 + %t120 = icmp eq ptr %t119, null + br i1 %t120, label %panic622, label %ok623 +panic622: + call void @finch_panic(ptr @.str.376, i64 122, ptr @.str.377) + unreachable +ok623: + %t121 = getelementptr inbounds %S.lexer.Lexer, ptr %t119, i32 0, i32 2 + %t122 = load i64, ptr %t121 + %t123 = load { ptr, i64, i64 }, ptr %t118 + %t124 = extractvalue { ptr, i64, i64 } %t123, 1 + %t125 = icmp uge i64 %t122, %t124 + br i1 %t125, label %range624, label %inrange625 +range624: + call void @finch_panic_index(ptr @.str.378, i64 122, i64 %t122, i64 %t124) + unreachable +inrange625: + %t126 = extractvalue { ptr, i64, i64 } %t123, 0 + %t127 = getelementptr inbounds i8, ptr %t126, i64 %t122 + %t128 = load i8, ptr %t127 + %t129 = icmp eq i8 %t128, 42 + br label %logic.from626 +logic.from626: + br i1 %t129, label %logic.rhs627, label %logic.end628 +logic.rhs627: + %t130 = load ptr, ptr %a18 + %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) + %t132 = icmp eq i8 %t131, 47 + br label %logic.rend629 +logic.rend629: + br label %logic.end628 +logic.end628: + %t133 = phi i1 [ false, %logic.from626 ], [ %t132, %logic.rend629 ] + %t134 = xor i1 %t133, true + br label %logic.rend630 +logic.rend630: + br label %logic.end619 +logic.end619: + %t135 = phi i1 [ false, %logic.from617 ], [ %t134, %logic.rend630 ] + br i1 %t135, label %while.body611, label %while.end612 +while.body611: + %t136 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t136) + br label %while.cond610 +while.end612: + %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) + unreachable +ok632: + %t139 = getelementptr inbounds %S.lexer.Lexer, ptr %t137, i32 0, i32 2 + %t140 = load i64, ptr %t139 + %t141 = load ptr, ptr %a18 + %t142 = icmp eq ptr %t141, null + br i1 %t142, label %panic633, label %ok634 +panic633: + call void @finch_panic(ptr @.str.381, i64 125, ptr @.str.382) + unreachable +ok634: + %t143 = getelementptr inbounds %S.lexer.Lexer, ptr %t141, i32 0, i32 0 + %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = icmp sge i64 %t140, %t145 + br i1 %t146, label %then635, label %endif637 +then635: + %t147 = load ptr, ptr %a18 + %t148 = load i64, ptr %a98 + %t149 = load i64, ptr %a103 + call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.383, i64 36, i64 0 }) + br label %endif637 +endif637: + %t150 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t150) + %t151 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t151) + br label %while.cond547 +endif605: + %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.384, i64 0, i64 0 }, 0 + %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.385, i64 0, i64 0 }, 1 + %t154 = load ptr, ptr %a18 + %t155 = icmp eq ptr %t154, null + br i1 %t155, label %panic638, label %ok639 +panic638: + call void @finch_panic(ptr @.str.386, i64 133, ptr @.str.387) + unreachable +ok639: + %t156 = getelementptr inbounds %S.lexer.Lexer, ptr %t154, i32 0, i32 3 + %t157 = load i64, ptr %t156 + %t158 = insertvalue %S.lexer.Token %t153, i64 %t157, 2 + %t159 = load ptr, ptr %a18 + %t160 = icmp eq ptr %t159, null + br i1 %t160, label %panic640, label %ok641 +panic640: + call void @finch_panic(ptr @.str.388, i64 133, ptr @.str.389) + unreachable +ok641: + %t161 = getelementptr inbounds %S.lexer.Lexer, ptr %t159, i32 0, i32 4 + %t162 = load i64, ptr %t161 + %t163 = insertvalue %S.lexer.Token %t158, i64 %t162, 3 + %t164 = load ptr, ptr %a18 + %t165 = icmp eq ptr %t164, null + br i1 %t165, label %panic642, label %ok643 +panic642: + call void @finch_panic(ptr @.str.390, i64 133, ptr @.str.391) + unreachable +ok643: + %t166 = getelementptr inbounds %S.lexer.Lexer, ptr %t164, i32 0, i32 5 + %t167 = load i1, ptr %t166 + %t168 = insertvalue %S.lexer.Token %t163, i1 %t167, 4 + store %S.lexer.Token %t168, ptr %a169 + %t170 = load ptr, ptr %a18 + %t171 = icmp eq ptr %t170, null + br i1 %t171, label %panic644, label %ok645 +panic644: + call void @finch_panic(ptr @.str.392, i64 134, ptr @.str.393) + unreachable +ok645: + %t172 = getelementptr inbounds %S.lexer.Lexer, ptr %t170, i32 0, i32 5 + store i1 false, ptr %t172 + %t173 = load ptr, ptr %a18 + %t174 = icmp eq ptr %t173, null + br i1 %t174, label %panic646, label %ok647 +panic646: + call void @finch_panic(ptr @.str.394, i64 135, ptr @.str.395) + unreachable +ok647: + %t175 = getelementptr inbounds %S.lexer.Lexer, ptr %t173, i32 0, i32 2 + %t176 = load i64, ptr %t175 + store i64 %t176, ptr %a177 + %t178 = load i8, ptr %a43 + %t179 = call i1 @finch.lexer.isAlpha(i8 %t178) + br i1 %t179, label %then648, label %else649 +then648: + br label %while.cond651 +while.cond651: + %t180 = load ptr, ptr %a18 + %t181 = icmp eq ptr %t180, null + br i1 %t181, label %panic654, label %ok655 +panic654: + call void @finch_panic(ptr @.str.396, i64 137, ptr @.str.397) + unreachable +ok655: + %t182 = getelementptr inbounds %S.lexer.Lexer, ptr %t180, i32 0, i32 2 + %t183 = load i64, ptr %t182 + %t184 = load ptr, ptr %a18 + %t185 = icmp eq ptr %t184, null + br i1 %t185, label %panic656, label %ok657 +panic656: + call void @finch_panic(ptr @.str.398, i64 137, ptr @.str.399) + unreachable +ok657: + %t186 = getelementptr inbounds %S.lexer.Lexer, ptr %t184, i32 0, i32 0 + %t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1 + %t188 = load i64, ptr %t187 + %t189 = icmp slt i64 %t183, %t188 + br label %logic.from658 +logic.from658: + br i1 %t189, label %logic.rhs659, label %logic.end660 +logic.rhs659: + %t190 = load ptr, ptr %a18 + %t191 = icmp eq ptr %t190, null + br i1 %t191, label %panic661, label %ok662 +panic661: + call void @finch_panic(ptr @.str.400, i64 137, ptr @.str.401) + unreachable +ok662: + %t192 = getelementptr inbounds %S.lexer.Lexer, ptr %t190, i32 0, i32 0 + %t193 = load ptr, ptr %a18 + %t194 = icmp eq ptr %t193, null + br i1 %t194, label %panic663, label %ok664 +panic663: + call void @finch_panic(ptr @.str.402, i64 137, ptr @.str.403) + unreachable +ok664: + %t195 = getelementptr inbounds %S.lexer.Lexer, ptr %t193, i32 0, i32 2 + %t196 = load i64, ptr %t195 + %t197 = load { ptr, i64, i64 }, ptr %t192 + %t198 = extractvalue { ptr, i64, i64 } %t197, 1 + %t199 = icmp uge i64 %t196, %t198 + br i1 %t199, label %range665, label %inrange666 +range665: + call void @finch_panic_index(ptr @.str.404, i64 137, i64 %t196, i64 %t198) + unreachable +inrange666: + %t200 = extractvalue { ptr, i64, i64 } %t197, 0 + %t201 = getelementptr inbounds i8, ptr %t200, i64 %t196 + %t202 = load i8, ptr %t201 + %t203 = call i1 @finch.lexer.isAlpha(i8 %t202) + br label %logic.from667 +logic.from667: + br i1 %t203, label %logic.end669, label %logic.rhs668 +logic.rhs668: + %t204 = load ptr, ptr %a18 + %t205 = icmp eq ptr %t204, null + br i1 %t205, label %panic670, label %ok671 +panic670: + call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) + unreachable +ok671: + %t206 = getelementptr inbounds %S.lexer.Lexer, ptr %t204, i32 0, i32 0 + %t207 = load ptr, ptr %a18 + %t208 = icmp eq ptr %t207, null + br i1 %t208, label %panic672, label %ok673 +panic672: + call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) + unreachable +ok673: + %t209 = getelementptr inbounds %S.lexer.Lexer, ptr %t207, i32 0, i32 2 + %t210 = load i64, ptr %t209 + %t211 = load { ptr, i64, i64 }, ptr %t206 + %t212 = extractvalue { ptr, i64, i64 } %t211, 1 + %t213 = icmp uge i64 %t210, %t212 + br i1 %t213, label %range674, label %inrange675 +range674: + call void @finch_panic_index(ptr @.str.409, i64 137, i64 %t210, i64 %t212) + unreachable +inrange675: + %t214 = extractvalue { ptr, i64, i64 } %t211, 0 + %t215 = getelementptr inbounds i8, ptr %t214, i64 %t210 + %t216 = load i8, ptr %t215 + %t217 = call i1 @finch.lexer.isDigit(i8 %t216) + br label %logic.rend676 +logic.rend676: + br label %logic.end669 +logic.end669: + %t218 = phi i1 [ true, %logic.from667 ], [ %t217, %logic.rend676 ] + br label %logic.rend677 +logic.rend677: + br label %logic.end660 +logic.end660: + %t219 = phi i1 [ false, %logic.from658 ], [ %t218, %logic.rend677 ] + br i1 %t219, label %while.body652, label %while.end653 +while.body652: + %t220 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t220) + br label %while.cond651 +while.end653: + %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) + unreachable +ok679: + %t223 = getelementptr inbounds %S.lexer.Lexer, ptr %t221, i32 0, i32 0 + %t224 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } %t224, ptr %a225 + %t227 = load i64, ptr %a177 + %t228 = load ptr, ptr %a18 + %t229 = icmp eq ptr %t228, null + br i1 %t229, label %panic680, label %ok681 +panic680: + call void @finch_panic(ptr @.str.413, i64 140, ptr @.str.414) + unreachable +ok681: + %t230 = getelementptr inbounds %S.lexer.Lexer, ptr %t228, i32 0, i32 2 + %t231 = load i64, ptr %t230 + call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.412, i64 140) + %t232 = load { ptr, i64, i64 }, ptr %a226 + %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } %t232, ptr %t233 + %t234 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 + store { ptr, i64, i64 } { ptr @.str.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: + %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: + 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: + 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) + 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) + 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) + 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) + 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) + 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) + 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: + 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: + 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) + 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 + %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 + br label %logic.from817 +logic.from817: + br i1 %t474, label %logic.rhs818, label %logic.end819 +logic.rhs818: + %t475 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 + %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i32 0, i32 1 + %t477 = load i64, ptr %t476 + %t478 = icmp ne i64 %t477, 1 + br label %logic.rend820 +logic.rend820: + br label %logic.end819 +logic.end819: + %t479 = phi i1 [ false, %logic.from817 ], [ %t478, %logic.rend820 ] + br i1 %t479, label %then821, label %endif823 +then821: + %t480 = load ptr, ptr %a18 + %t481 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 + %t482 = load i64, ptr %t481 + %t483 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 + %t484 = load i64, ptr %t483 + call void @finch.lexer.fail(ptr %t480, i64 %t482, i64 %t484, { ptr, i64, i64 } { ptr @.str.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) + 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) + 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 +panic843: + call void @finch_panic(ptr @.str.482, i64 211, ptr @.str.483) + 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) + 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 +panic851: + call void @finch_panic(ptr @.str.489, i64 221, ptr @.str.490) + 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 + 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 +} + +define internal %S.ast.Type @finch.ast.simple({ 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 %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t5, 0 + ret %S.ast.Type %t6 +} + +define internal %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %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 + 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 + %t6 = load %S.ast.Type, ptr %a1 + store %S.ast.Type %t6, ptr %a7 + call void @finch.copy.S_ast_Type(ptr %a8, ptr %a7) + %t9 = load %S.ast.Type, ptr %a8 + %t10 = load i64, ptr %t5 + %t11 = add i64 %t10, 1 + call void @finch_arr_reserve(ptr %t4, i64 %t11, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t12 = load ptr, ptr %t4 + %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 %t10 + 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 +} + +define internal %S.ast.Type @finch.ast.mapOf(%S.ast.Type %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a8 = alloca %S.ast.Type, align 16 + %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 + 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 + %t7 = load %S.ast.Type, ptr %a1 + 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 + %t11 = load i64, ptr %t6 + %t12 = add i64 %t11, 1 + call void @finch_arr_reserve(ptr %t5, i64 %t12, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t13 = load ptr, ptr %t5 + %t14 = getelementptr inbounds %S.ast.Type, ptr %t13, i64 %t11 + store %S.ast.Type %t10, ptr %t14 + store i64 %t12, ptr %t6 + %t15 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1 + %t17 = load %S.ast.Type, ptr %a2 + 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 + %t21 = load i64, ptr %t16 + %t22 = add i64 %t21, 1 + call void @finch_arr_reserve(ptr %t15, i64 %t22, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t23 = load ptr, ptr %t15 + %t24 = getelementptr inbounds %S.ast.Type, ptr %t23, i64 %t21 + 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 +} + +define internal %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %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 + 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 + %t6 = load %S.ast.Type, ptr %a1 + store %S.ast.Type %t6, ptr %a7 + call void @finch.copy.S_ast_Type(ptr %a8, ptr %a7) + %t9 = load %S.ast.Type, ptr %a8 + %t10 = load i64, ptr %t5 + %t11 = add i64 %t10, 1 + call void @finch_arr_reserve(ptr %t4, i64 %t11, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t12 = load ptr, ptr %t4 + %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 %t10 + 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 +} + +define internal i1 @finch.ast.same(%S.ast.Type %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a13 = 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 + %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 + %a43 = 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 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a68 = 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 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca i64, align 16 + store %S.ast.Type %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + %t3 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t4 = load { ptr, i64, i64 }, ptr %t3 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t6 = load { ptr, i64, i64 }, ptr %t5 + store { ptr, i64, i64 } %t4, ptr %a7 + 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: + ret i1 false +endif858: + %t11 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t12 = load { ptr, i64, i64 }, ptr %t11 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.494, i64 6, i64 0 }, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp ne i32 %t15, 0 + br label %logic.from859 +logic.from859: + br i1 %t16, label %logic.end861, label %logic.rhs860 +logic.rhs860: + %t17 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t18 = load { ptr, i64, i64 }, ptr %t17 + store { ptr, i64, i64 } %t18, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.495, i64 5, i64 0 }, ptr %a20 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br label %logic.rend862 +logic.rend862: + br label %logic.end861 +logic.end861: + %t23 = phi i1 [ true, %logic.from859 ], [ %t22, %logic.rend862 ] + br label %logic.from863 +logic.from863: + br i1 %t23, label %logic.end865, label %logic.rhs864 +logic.rhs864: + %t24 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t25 = load { ptr, i64, i64 }, ptr %t24 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.496, i64 4, i64 0 }, ptr %a27 + %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) + %t29 = icmp ne i32 %t28, 0 + br label %logic.rend866 +logic.rend866: + br label %logic.end865 +logic.end865: + %t30 = phi i1 [ true, %logic.from863 ], [ %t29, %logic.rend866 ] + br i1 %t30, label %then867, label %endif869 +then867: + %t31 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 + %t32 = load { ptr, i64, i64 }, ptr %t31 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t32, 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.from870 +logic.from870: + br i1 %t38, label %logic.rhs871, label %logic.end872 +logic.rhs871: + %t39 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t42 = load { ptr, i64, i64 }, ptr %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 + br label %logic.rend873 +logic.rend873: + br label %logic.end872 +logic.end872: + %t47 = phi i1 [ false, %logic.from870 ], [ %t46, %logic.rend873 ] + ret i1 %t47 +endif869: + %t48 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t49 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t49, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.497, i64 5, i64 0 }, ptr %a51 + %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) + %t53 = icmp ne i32 %t52, 0 + br label %logic.from874 +logic.from874: + br i1 %t53, label %logic.rhs875, label %logic.end876 +logic.rhs875: + %t54 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 + %t55 = load i64, ptr %t54 + %t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t57 = load i64, ptr %t56 + %t58 = icmp ne i64 %t55, %t57 + br label %logic.rend877 +logic.rend877: + br label %logic.end876 +logic.end876: + %t59 = phi i1 [ false, %logic.from874 ], [ %t58, %logic.rend877 ] + br i1 %t59, label %then878, label %endif880 +then878: + ret i1 false +endif880: + %t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.498, i64 5, i64 0 }, ptr %a63 + %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) + %t65 = icmp ne i32 %t64, 0 + br label %logic.from881 +logic.from881: + br i1 %t65, label %logic.end883, label %logic.rhs882 +logic.rhs882: + %t66 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t67 = load { ptr, i64, i64 }, ptr %t66 + store { ptr, i64, i64 } %t67, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.499, i64 3, i64 0 }, ptr %a69 + %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) + %t71 = icmp ne i32 %t70, 0 + br label %logic.rend884 +logic.rend884: + br label %logic.end883 +logic.end883: + %t72 = phi i1 [ true, %logic.from881 ], [ %t71, %logic.rend884 ] + br label %logic.from885 +logic.from885: + br i1 %t72, label %logic.end887, label %logic.rhs886 +logic.rhs886: + %t73 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t74 = load { ptr, i64, i64 }, ptr %t73 + store { ptr, i64, i64 } %t74, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.500, i64 3, i64 0 }, ptr %a76 + %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) + %t78 = icmp ne i32 %t77, 0 + br label %logic.rend888 +logic.rend888: + br label %logic.end887 +logic.end887: + %t79 = phi i1 [ true, %logic.from885 ], [ %t78, %logic.rend888 ] + br label %logic.from889 +logic.from889: + br i1 %t79, label %logic.end891, label %logic.rhs890 +logic.rhs890: + %t80 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t81 = load { ptr, i64, i64 }, ptr %t80 + store { ptr, i64, i64 } %t81, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.501, i64 5, i64 0 }, ptr %a83 + %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + br label %logic.rend892 +logic.rend892: + br label %logic.end891 +logic.end891: + %t86 = phi i1 [ true, %logic.from889 ], [ %t85, %logic.rend892 ] + br i1 %t86, label %then893, label %endif895 +then893: + %t87 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 + %t89 = load i64, ptr %t88 + %t90 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %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: + ret i1 false +endif898: + %t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 + %t96 = load i64, ptr %t95 + store i64 0, ptr %a97 + br label %for.cond899 +for.cond899: + %t98 = load i64, ptr %a97 + %t99 = icmp slt i64 %t98, %t96 + br i1 %t99, label %for.body900, label %for.end902 +for.body900: + %t100 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t101 = load i64, ptr %a97 + %t102 = load { ptr, i64, i64 }, ptr %t100 + %t103 = extractvalue { ptr, i64, i64 } %t102, 1 + %t104 = icmp uge i64 %t101, %t103 + br i1 %t104, label %range903, label %inrange904 +range903: + call void @finch_panic_index(ptr @.str.502, i64 54, i64 %t101, i64 %t103) + unreachable +inrange904: + %t105 = extractvalue { ptr, i64, i64 } %t102, 0 + %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t101 + %t107 = load %S.ast.Type, ptr %t106 + %t108 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t109 = load i64, ptr %a97 + %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) + unreachable +inrange906: + %t113 = extractvalue { ptr, i64, i64 } %t110, 0 + %t114 = getelementptr inbounds %S.ast.Type, ptr %t113, i64 %t109 + %t115 = load %S.ast.Type, ptr %t114 + %t116 = call i1 @finch.ast.same(%S.ast.Type %t107, %S.ast.Type %t115) + %t117 = xor i1 %t116, true + br i1 %t117, label %then907, label %endif909 +then907: + ret i1 false +endif909: + br label %for.step901 +for.step901: + %t118 = load i64, ptr %a97 + %t119 = add i64 %t118, 1 + store i64 %t119, ptr %a97 + br label %for.cond899 +for.end902: + ret i1 true +endif895: + ret i1 true +} + +define internal { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a28 = 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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = 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 + %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 + %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 + %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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = 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 + %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 + %a160 = 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 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br i1 %t7, label %then910, label %endif912 +then910: + %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t9 = load { ptr, i64, i64 }, ptr %t8 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 0, %t10 + br i1 %t11, label %range913, label %inrange914 +range913: + call void @finch_panic_index(ptr @.str.506, i64 65, i64 0, i64 %t10) + unreachable +inrange914: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0 + %t14 = load %S.ast.Type, ptr %t13 + %t15 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t14) + store { ptr, i64, i64 } { ptr @.str.505, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t19 +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) + 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) + 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) + 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) + 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 + %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 + %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 +} + +define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.lexer.Token, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %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 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %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 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = 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) + unreachable +ok953: + %t6 = getelementptr inbounds %S.parser.Parser, ptr %t4, i32 0, i32 4 + %t7 = load { ptr, i64, i64 }, ptr %t6 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 + %t13 = load i64, ptr %t12 + call void @finch_str_from_int(ptr %a14, i64 %t13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + 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 + 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) + ret void +} + +define internal %S.lexer.Token @finch.parser.cur(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a15 = alloca %S.lexer.Token, align 16 + %a16 = 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 %panic954, label %ok955 +panic954: + call void @finch_panic(ptr @.str.535, i64 19, ptr @.str.536) + unreachable +ok955: + %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 + %t5 = load ptr, ptr %a1 + %t6 = icmp eq ptr %t5, null + br i1 %t6, label %panic956, label %ok957 +panic956: + call void @finch_panic(ptr @.str.537, i64 19, ptr @.str.538) + unreachable +ok957: + %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load { ptr, i64, i64 }, ptr %t4 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range958, label %inrange959 +range958: + call void @finch_panic_index(ptr @.str.539, i64 19, i64 %t8, i64 %t10) + unreachable +inrange959: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 + %t14 = load %S.lexer.Token, ptr %t13 + store %S.lexer.Token %t14, ptr %a15 + call void @finch.copy.S_lexer_Token(ptr %a16, ptr %a15) + %t17 = load %S.lexer.Token, ptr %a16 + ret %S.lexer.Token %t17 +} + +define internal { ptr, i64, i64 } @finch.parser.curKind(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = 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 %panic960, label %ok961 +panic960: + call void @finch_panic(ptr @.str.540, i64 23, ptr @.str.541) + unreachable +ok961: + %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 + %t5 = load ptr, ptr %a1 + %t6 = icmp eq ptr %t5, null + br i1 %t6, label %panic962, label %ok963 +panic962: + call void @finch_panic(ptr @.str.542, i64 23, ptr @.str.543) + unreachable +ok963: + %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load { ptr, i64, i64 }, ptr %t4 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range964, label %inrange965 +range964: + call void @finch_panic_index(ptr @.str.544, i64 23, i64 %t8, i64 %t10) + unreachable +inrange965: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 + %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i32 0, i32 0 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + call void @finch_str_copy(ptr %a17, ptr %a16) + %t18 = load { ptr, i64, i64 }, ptr %a17 + ret { ptr, i64, i64 } %t18 +} + +define internal { ptr, i64, i64 } @finch.parser.peekKind(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a9 = alloca i64, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = 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 %panic966, label %ok967 +panic966: + call void @finch_panic(ptr @.str.545, i64 27, ptr @.str.546) + unreachable +ok967: + %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = load i64, ptr %a2 + %t8 = add i64 %t6, %t7 + store i64 %t8, ptr %a9 + %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) + unreachable +ok969: + %t13 = getelementptr inbounds %S.parser.Parser, ptr %t11, i32 0, i32 0 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = icmp sge i64 %t10, %t15 + br i1 %t16, label %then970, label %endif972 +then970: + %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) + unreachable +ok974: + %t19 = getelementptr inbounds %S.parser.Parser, ptr %t17, i32 0, i32 0 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 + %t21 = load i64, ptr %t20 + %t22 = sub i64 %t21, 1 + store i64 %t22, ptr %a9 + br label %endif972 +endif972: + %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) + unreachable +ok976: + %t25 = getelementptr inbounds %S.parser.Parser, ptr %t23, i32 0, i32 0 + %t26 = load i64, ptr %a9 + %t27 = load { ptr, i64, i64 }, ptr %t25 + %t28 = extractvalue { ptr, i64, i64 } %t27, 1 + %t29 = icmp uge i64 %t26, %t28 + br i1 %t29, label %range977, label %inrange978 +range977: + call void @finch_panic_index(ptr @.str.553, i64 31, i64 %t26, i64 %t28) + unreachable +inrange978: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds %S.lexer.Token, ptr %t30, i64 %t26 + %t32 = getelementptr inbounds %S.lexer.Token, ptr %t31, i32 0, i32 0 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_copy(ptr %a35, ptr %a34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + ret { ptr, i64, i64 } %t36 +} + +define internal i1 @finch.parser.at(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %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) + unreachable +ok980: + %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic981, label %ok982 +panic981: + call void @finch_panic(ptr @.str.556, i64 35, ptr @.str.557) + unreachable +ok982: + %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load { ptr, i64, i64 }, ptr %t5 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range983, label %inrange984 +range983: + call void @finch_panic_index(ptr @.str.558, i64 35, i64 %t9, i64 %t11) + unreachable +inrange984: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 + %t15 = getelementptr inbounds %S.lexer.Token, ptr %t14, i32 0, i32 0 + %t16 = load { ptr, i64, i64 }, ptr %t15 + %t17 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } %t17, ptr %a19 + %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) + %t21 = icmp ne i32 %t20, 0 + ret i1 %t21 +} + +define internal %S.lexer.Token @finch.parser.next(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %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) + unreachable +ok986: + %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 + %t5 = load ptr, ptr %a1 + %t6 = icmp eq ptr %t5, null + br i1 %t6, label %panic987, label %ok988 +panic987: + call void @finch_panic(ptr @.str.561, i64 39, ptr @.str.562) + unreachable +ok988: + %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load { ptr, i64, i64 }, ptr %t4 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range989, label %inrange990 +range989: + call void @finch_panic_index(ptr @.str.563, i64 39, i64 %t8, i64 %t10) + unreachable +inrange990: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 + %t14 = load %S.lexer.Token, ptr %t13 + store %S.lexer.Token %t14, ptr %a15 + call void @finch.copy.S_lexer_Token(ptr %a16, ptr %a15) + %t17 = load %S.lexer.Token, ptr %a16 + 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) + unreachable +ok992: + %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 +} + +define internal i1 @finch.parser.accept(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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.parser.at(ptr %t3, { ptr, i64, i64 } %t4) + br i1 %t5, label %then993, label %endif995 +then993: + %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) + unreachable +ok997: + %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = add i64 %t9, 1 + store i64 %t10, ptr %t8 + ret i1 true +endif995: + ret i1 false +} + +define internal { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %p0) { +entry: + %a1 = alloca %S.lexer.Token, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 + %a40 = 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 + %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 + 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 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br i1 %t7, label %then998, label %endif1000 +then998: + %t8 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 1 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.569, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } %t9, ptr %a12 + call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) + %t13 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.570, i64 1, i64 0 }, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t17 +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 +} + +define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = 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 + %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 + %a25 = 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 + %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: + %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 } %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 + 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 +} + +define internal i1 @finch.parser.sameLine(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic1020, label %ok1021 +panic1020: + call void @finch_panic(ptr @.str.584, i64 79, ptr @.str.585) + unreachable +ok1021: + %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 2 + %t5 = load i64, ptr %t4 + %t6 = icmp sgt i64 %t5, 0 + br label %logic.from1022 +logic.from1022: + br i1 %t6, label %logic.end1024, label %logic.rhs1023 +logic.rhs1023: + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic1025, label %ok1026 +panic1025: + call void @finch_panic(ptr @.str.586, i64 79, ptr @.str.587) + unreachable +ok1026: + %t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 0 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic1027, label %ok1028 +panic1027: + call void @finch_panic(ptr @.str.588, i64 79, ptr @.str.589) + unreachable +ok1028: + %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = load { ptr, i64, i64 }, ptr %t9 + %t15 = extractvalue { ptr, i64, i64 } %t14, 1 + %t16 = icmp uge i64 %t13, %t15 + br i1 %t16, label %range1029, label %inrange1030 +range1029: + call void @finch_panic_index(ptr @.str.590, i64 79, i64 %t13, i64 %t15) + unreachable +inrange1030: + %t17 = extractvalue { ptr, i64, i64 } %t14, 0 + %t18 = getelementptr inbounds %S.lexer.Token, ptr %t17, i64 %t13 + %t19 = getelementptr inbounds %S.lexer.Token, ptr %t18, i32 0, i32 4 + %t20 = load i1, ptr %t19 + %t21 = xor i1 %t20, true + br label %logic.rend1031 +logic.rend1031: + br label %logic.end1024 +logic.end1024: + %t22 = phi i1 [ true, %logic.from1022 ], [ %t21, %logic.rend1031 ] + ret i1 %t22 +} + +define internal %S.ast.Node @finch.parser.node(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.lexer.Token, align 16 + %a17 = alloca %S.lexer.Token, align 16 + %a19 = alloca %S.lexer.Token, align 16 + %a21 = 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 + %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) + unreachable +ok1033: + %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic1034, label %ok1035 +panic1034: + call void @finch_panic(ptr @.str.593, i64 83, ptr @.str.594) + unreachable +ok1035: + %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load { ptr, i64, i64 }, ptr %t5 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range1036, label %inrange1037 +range1036: + call void @finch_panic_index(ptr @.str.595, i64 83, i64 %t9, i64 %t11) + unreachable +inrange1037: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 + %t15 = load %S.lexer.Token, ptr %t14 + store %S.lexer.Token %t15, ptr %a16 + call void @finch.copy.S_lexer_Token(ptr %a17, ptr %a16) + %t18 = load %S.lexer.Token, ptr %a17 + store %S.lexer.Token %t18, ptr %a19 + %t20 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t20, ptr %a21 + call void @finch_str_copy(ptr %a22, ptr %a21) + %t23 = load { ptr, i64, i64 }, ptr %a22 + %t24 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } %t23, 0 + %t25 = getelementptr inbounds %S.lexer.Token, ptr %a19, i32 0, i32 2 + %t26 = load i64, ptr %t25 + %t27 = insertvalue %S.ast.Node %t24, i64 %t26, 11 + %t28 = getelementptr inbounds %S.lexer.Token, ptr %a19, i32 0, i32 3 + %t29 = load i64, ptr %t28 + %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) + unreachable +ok1039: + %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 + %t34 = load i64, ptr %t33 + %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 + ret %S.ast.Node %t35 +} + +define internal i1 @finch.parser.isTypeName({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca i64, align 16 + %a29 = alloca i64, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %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.598, 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 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.600, i64 4, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 + store { ptr, i64, i64 } { ptr @.str.601, 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 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 + store { ptr, i64, i64 } { ptr @.str.603, i64 3, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 + store { ptr, i64, i64 } { ptr @.str.604, 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 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 + store { ptr, i64, i64 } { ptr @.str.606, i64 3, i64 0 }, ptr %t12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 + store { ptr, i64, i64 } { ptr @.str.607, 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 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 + store { ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 + store { ptr, i64, i64 } { ptr @.str.610, 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 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 + store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 + store { ptr, i64, i64 } { ptr @.str.613, i64 3, i64 0 }, ptr %t19 + %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 + %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 + %t25 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a26 + %t27 = load i64, ptr %t24 + %t28 = load ptr, ptr %a23 + store i64 0, ptr %a29 + br label %find.cond1040 +find.cond1040: + %t30 = load i64, ptr %a29 + %t31 = icmp slt i64 %t30, %t27 + br i1 %t31, label %find.body1041, label %find.end1044 +find.body1041: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t30 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + store { ptr, i64, i64 } %t25, ptr %a35 + %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) + %t37 = icmp ne i32 %t36, 0 + br i1 %t37, label %find.hit1042, label %find.next1043 +find.hit1042: + store i64 %t30, ptr %a26 + br label %find.end1044 +find.next1043: + %t38 = add i64 %t30, 1 + store i64 %t38, ptr %a29 + br label %find.cond1040 +find.end1044: + %t39 = load i64, ptr %a26 + %t40 = icmp sge i64 %t39, 0 + 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 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %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 + %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 + 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: + %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) + %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 + %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 + %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: + %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: + %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) + 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 +} + +define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { +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 + %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 + %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 + 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 }) + %t4 = xor i1 %t3, true + br label %logic.from1098 +logic.from1098: + br i1 %t4, label %logic.end1100, label %logic.rhs1099 +logic.rhs1099: + %t5 = load ptr, ptr %a1 + %t6 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t5, i64 1) + store { ptr, i64, i64 } %t6, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.641, i64 1, i64 0 }, ptr %a8 + %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) + %t10 = icmp eq i32 %t9, 0 + br label %logic.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: + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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: + 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: + ret i1 false +} + +define internal i1 @finch.parser.genericCallAheadFrom(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a9 = alloca i1, align 16 + 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) + unreachable +ok1163: + %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = sub i64 %t5, 1 + store i64 %t6, ptr %t4 + %t7 = load ptr, ptr %a1 + %t8 = call i1 @finch.parser.genericCallAhead(ptr %t7) + 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) + unreachable +ok1165: + %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + store i64 %t14, ptr %t12 + %t15 = load i1, ptr %a9 + ret i1 %t15 +} + +define internal i1 @finch.parser.genericCallAhead(ptr %p0) { +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 + %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 + %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 + 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 + %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) + 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) + 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) + 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: + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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: + 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: + ret i1 false +} + +define internal i1 @finch.parser.atDeclaration(ptr %p0) { +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 + %a20 = 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 + %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 + %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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = 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: + ret i1 true +endif1234: + %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: + %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 + %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) + %t11 = icmp ne i32 %t10, 0 + 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: + 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) + 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) + 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) + 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 + 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: + 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) + 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) + 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) + 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 +} + +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 + %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 + 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: + %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: + %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: + ret void +endif1289: + %t11 = load ptr, ptr %a1 + %t12 = load ptr, ptr %a1 + %t13 = call %S.lexer.Token @finch.parser.cur(ptr %t12) + %t14 = load ptr, ptr %a1 + %t15 = call %S.lexer.Token @finch.parser.cur(ptr %t14) + %t16 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t15) + store { ptr, i64, i64 } { ptr @.str.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) + ret void +} + +define internal %S.ast.Program @finch.parser.parseProgram(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Program, align 16 + %a10 = 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 + %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 + %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 + %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 + %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 + %a102 = 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 + %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 + %a125 = 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 + store ptr %p0, ptr %a1 + store %S.ast.Program zeroinitializer, ptr %a2 + br label %while.cond1290 +while.cond1290: + %t3 = load ptr, ptr %a1 + %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.722, i64 3, i64 0 }) + %t5 = xor i1 %t4, true + br i1 %t5, label %while.body1291, label %while.end1292 +while.body1291: + %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: + %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: + %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) + unreachable +ok1300: + %t17 = getelementptr inbounds %S.parser.Parser, ptr %t15, i32 0, i32 4 + %t18 = load { ptr, i64, i64 }, ptr %t17 + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a19 + %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 + %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) + %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 + %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) + %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)) + %t170 = load ptr, ptr %t164 + %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 +} + +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 + %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 + %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 + 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 }) + 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: + %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: + %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 + %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 +} + +define internal %S.ast.Node @finch.parser.parseMatch(ptr %p0, i1 %p1) { +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 + %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 + 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 }) + 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) + 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) + 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: + %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: + %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 + %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 }) + 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) + 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 +} + +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 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, 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 + ret { ptr, i64, i64 } %t24 +} + +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 + %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 + %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 + 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 }) + 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 +} + +define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %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 + %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 + 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 }) + 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 }) + %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: + %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: + %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) + 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 + %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: + %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) + unreachable +inrange1452: + %t147 = extractvalue { ptr, i64, i64 } %t144, 0 + %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t143 + %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i32 0, i32 14 + %t150 = load i64, ptr %t149 + %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t150, ptr %t151 + %t152 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t152, ptr %a153 + call void @finch.copy.S_ast_Node(ptr %a154, ptr %a153) + %t155 = load %S.ast.Node, ptr %a154 + ret %S.ast.Node %t155 +} + +define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { +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 + 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 }) + 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) + 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) + 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 + %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 + %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) + 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 +} + +define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + 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 + %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) + %t9 = icmp ne i32 %t8, 0 + br i1 %t9, label %then1465, label %endif1467 +then1465: + %t10 = load ptr, ptr %a1 + %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) + ret %S.ast.Node %t11 +endif1467: + %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 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp ne i32 %t15, 0 + br i1 %t16, label %then1468, label %endif1470 +then1468: + %t17 = load ptr, ptr %a1 + %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }) + store %S.ast.Node %t18, ptr %a19 + %t20 = load ptr, ptr %a1 + %t21 = call %S.lexer.Token @finch.parser.next(ptr %t20) + %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: + %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) + %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 + %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 + %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: + %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 + %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 +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 + 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) + 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 +} + +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 + 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 }) + 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 +} + +define internal i64 @finch.parser.binaryLevel({ 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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = 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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 + %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 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = 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 + %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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = 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 + 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 + %t5 = call i32 @finch_str_eq(ptr %a3, ptr %a4) + %t6 = icmp ne i32 %t5, 0 + br i1 %t6, label %then1588, label %endif1590 +then1588: + ret i64 1 +endif1590: + %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 + %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) + %t11 = icmp ne i32 %t10, 0 + br i1 %t11, label %then1591, label %endif1593 +then1591: + ret i64 2 +endif1593: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + ret i64 3 +endif1616: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + ret i64 4 +endif1631: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + ret i64 5 +endif1654: + ret i64 0 +} + +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 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) + store %S.ast.Node %t3, ptr %a4 + %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: + %t8 = load ptr, ptr %a1 + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.946, i64 2, i64 0 }) + %t10 = xor i1 %t9, true + br label %logic.rend1658 +logic.rend1658: + br label %logic.end1657 +logic.end1657: + %t11 = phi i1 [ true, %logic.from1655 ], [ %t10, %logic.rend1658 ] + br i1 %t11, label %then1659, label %endif1661 +then1659: + %t12 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t12, ptr %a13 + call void @finch.copy.S_ast_Node(ptr %a14, ptr %a13) + %t15 = load %S.ast.Node, ptr %a14 + ret %S.ast.Node %t15 +endif1661: + %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 +} + +define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { +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 + %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 + %a55 = alloca %S.ast.Node, align 16 + %a56 = 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: + %t5 = load ptr, ptr %a1 + %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) + ret %S.ast.Node %t6 +endif1667: + %t7 = load ptr, ptr %a1 + %t8 = load i64, ptr %a2 + %t9 = add i64 %t8, 1 + %t10 = call %S.ast.Node @finch.parser.parseBinary(ptr %t7, i64 %t9) + store %S.ast.Node %t10, ptr %a11 + br label %while.cond1668 +while.cond1668: + %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: + %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 %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 +} + +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 + %a33 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.950, i64 3, i64 0 }) + br i1 %t3, label %then1675, label %endif1677 +then1675: + %t4 = load ptr, ptr %a1 + %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.951, i64 3, i64 0 }) + store %S.ast.Node %t5, ptr %a6 + %t7 = load ptr, ptr %a1 + %t8 = call %S.lexer.Token @finch.parser.next(ptr %t7) + %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 +} + +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 + %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 + 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) + 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) + 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) + 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 + %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) + 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 }) + ret void +} + +define internal %S.ast.Node @finch.parser.parsePostfix(ptr %p0) { +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 + %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 + %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 + 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: + %t5 = load ptr, ptr %a1 + %t6 = call i1 @finch.parser.sameLine(ptr %t5) + br i1 %t6, label %while.body1714, label %while.end1715 +while.body1714: + %t7 = load ptr, ptr %a1 + %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.974, i64 1, i64 0 }) + br i1 %t8, label %then1716, label %else1717 +then1716: + %t9 = load ptr, ptr %a1 + %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.975, i64 6, i64 0 }) + store %S.ast.Node %t10, ptr %a11 + %t12 = load ptr, ptr %a1 + %t13 = call %S.lexer.Token @finch.parser.next(ptr %t12) + %t14 = load ptr, ptr %a1 + %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.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: + %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 }) + 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) + 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 + %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) + 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 +} + +define internal %S.ast.Node @finch.parser.parsePrimary(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a4 = alloca %S.lexer.Token, align 16 + %a7 = alloca %S.ast.Node, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = 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 + %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 + %a35 = 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.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 + %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 + %a68 = 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 + %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 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, 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 + %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 + 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 }) + 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 + store { ptr, i64, i64 } %t9, ptr %a10 + call void @finch_str_copy(ptr %a11, ptr %a10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + 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 + %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: + %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 + %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: + %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 + %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: + %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) + 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) + 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 + %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: + %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) + 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) + 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) + 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) + 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: + %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 + %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 +} + +define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca %S.parser.Parser, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch.copy.arr_S_lexer_Token(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + %t8 = insertvalue %S.parser.Parser zeroinitializer, { ptr, i64, i64 } %t7, 0 + %t9 = insertvalue %S.parser.Parser %t8, i64 0, 1 + %t10 = insertvalue %S.parser.Parser %t9, i64 0, 2 + %t11 = load i64, ptr %a2 + %t12 = insertvalue %S.parser.Parser %t10, i64 %t11, 3 + %t13 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t13, ptr %a14 + call void @finch_str_copy(ptr %a15, ptr %a14) + %t16 = load { ptr, i64, i64 }, ptr %a15 + %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) + ret %S.ast.Program %t19 +} + +define internal { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1045, i64 2, i64 0 }, ptr %a6 + call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1048, i64 2, i64 0 }, ptr %a11 + call void @finch_str_replace(ptr %a9, ptr %a8, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1050, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1051, i64 1, i64 0 }, ptr %a16 + call void @finch_str_replace(ptr %a14, ptr %a13, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t17 +} + +define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + store { ptr, i64, i64 } %p5, ptr %a6 + store i64 %p6, ptr %a7 + store i64 %p7, ptr %a8 + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic1830, label %ok1831 +panic1830: + call void @finch_panic(ptr @.str.1052, i64 195, ptr @.str.1053) + unreachable +ok1831: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 + %t12 = load i1, ptr %t11 + %t13 = xor i1 %t12, true + br i1 %t13, label %then1832, label %endif1834 +then1832: + ret void +endif1834: + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic1835, label %ok1836 +panic1835: + call void @finch_panic(ptr @.str.1054, i64 198, ptr @.str.1055) + unreachable +ok1836: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 27 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic1837, label %ok1838 +panic1837: + call void @finch_panic(ptr @.str.1057, i64 198, ptr @.str.1058) + unreachable +ok1838: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 1 + %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t22 = load i64, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %t20 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 %t22, %t24 + br i1 %t25, label %range1839, label %inrange1840 +range1839: + call void @finch_panic_index(ptr @.str.1059, i64 198, i64 %t22, i64 %t24) + unreachable +inrange1840: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 + %t28 = load { ptr, i64, i64 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.1056, i64 3, i64 0 }, ptr %a30 + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.1060, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a33 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t38 = load i64, ptr %t37 + call void @finch_str_from_int(ptr %a39, i64 %t38) + %t40 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t36, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t44, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1061, i64 1, i64 0 }, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a45 + %t49 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a50, i64 %t49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a53 + store { ptr, i64, i64 } %t51, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1062, i64 1, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a56 + %t60 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a61, i64 %t60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a67 + %t71 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t70, ptr %a73 + store { ptr, i64, i64 } %t71, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a72 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a76 + %t80 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a81, i64 %t80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t79, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.1065, i64 1, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a92, i64 %t91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t90, ptr %a95 + store { ptr, i64, i64 } %t93, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.1066, i64 1, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a98 + %t102 = load { ptr, i64, i64 }, ptr %a5 + %t103 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t102) + store { ptr, i64, i64 } %t101, ptr %a105 + store { ptr, i64, i64 } %t103, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a104 + %t108 = load i64, ptr %t17 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %t16 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 + store { ptr, i64, i64 } %t107, ptr %t111 + store i64 %t109, ptr %t17 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %p0) { +entry: + %a1 = alloca %S.gen.FnSig, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca i64, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + store %S.gen.FnSig %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 + %t5 = load i64, ptr %t4 + store i64 0, ptr %a6 + br label %for.cond1841 +for.cond1841: + %t7 = load i64, ptr %a6 + %t8 = icmp slt i64 %t7, %t5 + br i1 %t8, label %for.body1842, label %for.end1844 +for.body1842: + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 + %t11 = load i64, ptr %a6 + %t12 = load { ptr, i64, i64 }, ptr %t10 + %t13 = extractvalue { ptr, i64, i64 } %t12, 1 + %t14 = icmp uge i64 %t11, %t13 + br i1 %t14, label %range1845, label %inrange1846 +range1845: + call void @finch_panic_index(ptr @.str.1067, i64 205, i64 %t11, i64 %t13) + unreachable +inrange1846: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t11 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1068, i64 1, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a19 + %t23 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 + %t24 = load i64, ptr %a6 + %t25 = load { ptr, i64, i64 }, ptr %t23 + %t26 = extractvalue { ptr, i64, i64 } %t25, 1 + %t27 = icmp uge i64 %t24, %t26 + br i1 %t27, label %range1847, label %inrange1848 +range1847: + call void @finch_panic_index(ptr @.str.1069, i64 205, i64 %t24, i64 %t26) + unreachable +inrange1848: + %t28 = extractvalue { ptr, i64, i64 } %t25, 0 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t24 + %t30 = load { ptr, i64, i64 }, ptr %t29 + store { ptr, i64, i64 } %t22, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a31 + %t35 = load i64, ptr %t9 + %t36 = add i64 %t35, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t36, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t37 = load ptr, ptr %a2 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t35 + store { ptr, i64, i64 } %t34, ptr %t38 + store i64 %t36, ptr %t9 + br label %for.step1843 +for.step1843: + %t39 = load i64, ptr %a6 + %t40 = add i64 %t39, 1 + store i64 %t40, ptr %a6 + br label %for.cond1841 +for.end1844: + %t41 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch_str_copy(ptr %a44, ptr %a43) + %t45 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t45, ptr %a46 + %t47 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 + %t49 = load i64, ptr %t48 + %t50 = icmp sgt i64 %t49, 0 + br i1 %t50, label %then1849, label %endif1851 +then1849: + %t51 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.1070, i64 1, i64 0 }, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a53 + %t57 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t58 = load { ptr, i64, i64 }, ptr %t57 + store { ptr, i64, i64 } %t56, ptr %a60 + store { ptr, i64, i64 } %t58, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t62, ptr %a46 + br label %endif1851 +endif1851: + %t63 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1071, i64 3, i64 0 }, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1072, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a68 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1073, i64 2, i64 0 }, ptr %a73 + call void @finch_str_join(ptr %a74, ptr %a2, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t71, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.1074, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t83, ptr %a84 + %t85 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 + %t86 = load i1, ptr %t85 + br i1 %t86, label %then1852, label %else1853 +then1852: + %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.1075, i64 4, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp ne i32 %t92, 0 + br i1 %t93, label %then1855, label %else1856 +then1855: + %t94 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t94, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.1076, i64 5, i64 0 }, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t98, ptr %a84 + br label %endif1857 +else1856: + %t99 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.1077, i64 4, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a100 + %t104 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t105 = load %S.ast.Type, ptr %t104 + %t106 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t105) + store { ptr, i64, i64 } %t103, ptr %a108 + store { ptr, i64, i64 } %t106, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t110, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.1078, i64 1, i64 0 }, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t114, ptr %a84 + br label %endif1857 +endif1857: + br label %endif1854 +else1853: + %t115 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 + %t117 = load { ptr, i64, i64 }, ptr %t116 + store { ptr, i64, i64 } %t117, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.1079, i64 4, i64 0 }, ptr %a119 + %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) + %t121 = icmp eq i32 %t120, 0 + br i1 %t121, label %then1858, label %endif1860 +then1858: + %t122 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.1080, i64 4, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a123 + %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t128 = load %S.ast.Type, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t128) + store { ptr, i64, i64 } %t126, ptr %a131 + store { ptr, i64, i64 } %t129, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t133, ptr %a84 + br label %endif1860 +endif1860: + br label %endif1854 +endif1854: + %t134 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t134, ptr %a135 + call void @finch_str_copy(ptr %a136, ptr %a135) + %t137 = load { ptr, i64, i64 }, ptr %a136 + ret { ptr, i64, i64 } %t137 +} + +define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.FnSig, align 16 + %a11 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca %S.ast.Node, align 16 + %a41 = alloca %S.ast.Node, align 16 + %a43 = alloca %S.ast.Node, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.gen.FnSig %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic1861, label %ok1862 +panic1861: + call void @finch_panic(ptr @.str.1081, i64 226, ptr @.str.1082) + unreachable +ok1862: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + %t8 = xor i1 %t7, true + br i1 %t8, label %then1863, label %endif1865 +then1863: + ret void +endif1865: + %t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t10 = load i64, ptr %t9 + store i64 %t10, ptr %a11 + %t12 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1083, i64 6, i64 0 }, ptr %a15 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp ne i32 %t16, 0 + br i1 %t17, label %then1866, label %endif1868 +then1866: + %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t19 = load i64, ptr %t18 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a11 + br label %endif1868 +endif1868: + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic1869, label %ok1870 +panic1869: + call void @finch_panic(ptr @.str.1084, i64 233, ptr @.str.1085) + unreachable +ok1870: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 0 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 16 + %t25 = load i64, ptr %t24 + %t26 = load { ptr, i64, i64 }, ptr %t23 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range1871, label %inrange1872 +range1871: + call void @finch_panic_index(ptr @.str.1086, i64 233, i64 %t25, i64 %t27) + unreachable +inrange1872: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds %S.ast.Program, ptr %t29, i64 %t25 + %t31 = getelementptr inbounds %S.ast.Program, ptr %t30, i32 0, i32 8 + %t32 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 17 + %t33 = load i64, ptr %t32 + %t34 = load { ptr, i64, i64 }, ptr %t31 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range1873, label %inrange1874 +range1873: + call void @finch_panic_index(ptr @.str.1087, i64 233, i64 %t33, i64 %t35) + unreachable +inrange1874: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 + %t39 = load %S.ast.Node, ptr %t38 + store %S.ast.Node %t39, ptr %a40 + call void @finch.copy.S_ast_Node(ptr %a41, ptr %a40) + %t42 = load %S.ast.Node, ptr %a41 + store %S.ast.Node %t42, ptr %a43 + %t44 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch_str_copy(ptr %a47, ptr %a46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t48, ptr %a49 + %t50 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 7 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = icmp sgt i64 %t52, 0 + br label %logic.from1875 +logic.from1875: + br i1 %t53, label %logic.rhs1876, label %logic.end1877 +logic.rhs1876: + %t54 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 2 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = icmp eq i64 %t56, 0 + br label %logic.rend1878 +logic.rend1878: + br label %logic.end1877 +logic.end1877: + %t58 = phi i1 [ false, %logic.from1875 ], [ %t57, %logic.rend1878 ] + br i1 %t58, label %then1879, label %endif1881 +then1879: + %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_copy(ptr %a62, ptr %a61) + %t63 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t63, ptr %a49 + br label %endif1881 +endif1881: + %t64 = load ptr, ptr %a1 + %t65 = load %S.ast.Node, ptr %a2 + %t66 = load i64, ptr %a11 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 + %t68 = load i64, ptr %t67 + %t69 = load %S.gen.FnSig, ptr %a3 + %t70 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t69) + store { ptr, i64, i64 } { ptr @.str.1088, i64 9, i64 0 }, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1089, i64 4, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a75 + %t79 = load ptr, ptr %a1 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic1882, label %ok1883 +panic1882: + call void @finch_panic(ptr @.str.1090, i64 238, ptr @.str.1091) + unreachable +ok1883: + %t81 = getelementptr inbounds %S.gen.Gen, ptr %t79, i32 0, i32 1 + %t82 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 + %t83 = load i64, ptr %t82 + %t84 = load { ptr, i64, i64 }, ptr %t81 + %t85 = extractvalue { ptr, i64, i64 } %t84, 1 + %t86 = icmp uge i64 %t83, %t85 + br i1 %t86, label %range1884, label %inrange1885 +range1884: + call void @finch_panic_index(ptr @.str.1092, i64 238, i64 %t83, i64 %t85) + unreachable +inrange1885: + %t87 = extractvalue { ptr, i64, i64 } %t84, 0 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 %t83 + %t89 = load { ptr, i64, i64 }, ptr %t88 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 + %t91 = load i64, ptr %t90 + %t92 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 + %t93 = load i64, ptr %t92 + %t94 = add i64 %t93, 3 + call void @finch.gen.noteRef(ptr %t64, %S.ast.Node %t65, i64 %t66, i64 %t68, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t89, i64 %t91, i64 %t94) + ret void +} + +define internal void @finch.copy.arr_bool(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_FnSig(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.FnSig, ptr %src + store %S.gen.FnSig %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 6 + %t11 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 7 + %t13 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 7 + call void @finch.copy.arr_S_ast_Type(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 8 + %t15 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 8 + call void @finch_str_copy(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 11 + %t17 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 11 + call void @finch_str_copy(ptr %t16, ptr %t17) + %t18 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 12 + %t19 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 12 + call void @finch.copy.S_ast_Type(ptr %t18, ptr %t19) + %t20 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 13 + %t21 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 13 + call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) + %t22 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 14 + %t23 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 14 + call void @finch.copy.arr_str(ptr %t22, ptr %t23) + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 15 + %t25 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 15 + call void @finch.copy.arr_bool(ptr %t24, ptr %t25) + ret void +} + +define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Template, ptr %src + store %S.gen.Template %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_StructDef(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.StructDef, ptr %src + store %S.gen.StructDef %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 3 + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_int(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 4 + %t9 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_int(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 5 + %t11 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 6 + %t13 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 7 + %t15 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 7 + call void @finch.copy.arr_S_ast_Type(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 8 + %t17 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 8 + call void @finch_str_copy(ptr %t16, ptr %t17) + %t18 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 11 + %t19 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 11 + call void @finch.copy.arr_str(ptr %t18, ptr %t19) + %t20 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 12 + %t21 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 12 + call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) + ret void +} + +define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca i64, align 16 + %a38 = alloca %S.gen.FnSig, align 16 + %a39 = alloca %S.gen.FnSig, align 16 + %a41 = alloca %S.gen.FnSig, align 16 + %a61 = alloca %S.ast.Node, align 16 + %a62 = alloca %S.ast.Node, align 16 + %a64 = alloca %S.ast.Node, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca i64, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca i64, align 16 + %a233 = alloca %S.gen.Template, align 16 + %a234 = alloca %S.gen.Template, align 16 + %a236 = alloca %S.gen.Template, align 16 + %a258 = alloca %S.ast.Node, align 16 + %a259 = alloca %S.ast.Node, align 16 + %a261 = alloca %S.ast.Node, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a329 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca i64, align 16 + %a400 = alloca %S.gen.StructDef, align 16 + %a401 = alloca %S.gen.StructDef, align 16 + %a403 = alloca %S.gen.StructDef, align 16 + %a430 = alloca %S.ast.Node, align 16 + %a431 = alloca %S.ast.Node, align 16 + %a433 = alloca %S.ast.Node, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %a483 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca i64, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a525 = alloca { ptr, i64, i64 }, align 16 + %a527 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a541 = alloca { ptr, i64, i64 }, align 16 + %a543 = alloca { ptr, i64, i64 }, align 16 + %a544 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca i64, align 16 + %a586 = alloca i64, align 16 + %a594 = alloca %S.ast.Node, align 16 + %a595 = alloca %S.ast.Node, align 16 + %a597 = alloca %S.ast.Node, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a609 = alloca %S.ast.Node, align 16 + %a613 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a651 = alloca { ptr, i64, i64 }, align 16 + %a652 = alloca { ptr, i64, i64 }, align 16 + %a653 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a656 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a680 = alloca { ptr, i64, i64 }, align 16 + %a682 = alloca { ptr, i64, i64 }, align 16 + %a683 = alloca { ptr, i64, i64 }, align 16 + %a684 = alloca { ptr, i64, i64 }, align 16 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a698 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond1886 +each.cond1886: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body1887, label %each.end1889 +each.body1887: + %t8 = load ptr, ptr %a2 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 %t6 + %t10 = load { ptr, i64, i64 }, ptr %t9 + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic1890, label %ok1891 +panic1890: + call void @finch_panic(ptr @.str.1093, i64 244, ptr @.str.1094) + unreachable +ok1891: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 27 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1095, i64 3, i64 0 }, ptr %a18 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a17 + %t21 = load i64, ptr %t15 + %t22 = add i64 %t21, 1 + call void @finch_arr_reserve(ptr %t14, i64 %t22, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t23 = load ptr, ptr %t14 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i64 %t21 + store { ptr, i64, i64 } %t20, ptr %t24 + store i64 %t22, ptr %t15 + br label %each.step1888 +each.step1888: + %t25 = load i64, ptr %a3 + %t26 = add i64 %t25, 1 + store i64 %t26, ptr %a3 + br label %each.cond1886 +each.end1889: + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1892, label %ok1893 +panic1892: + call void @finch_panic(ptr @.str.1096, i64 246, ptr @.str.1097) + unreachable +ok1893: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 14 + store i64 0, ptr %a30 + br label %each.cond1894 +each.cond1894: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = load i64, ptr %a30 + %t34 = icmp slt i64 %t33, %t32 + br i1 %t34, label %each.body1895, label %each.end1897 +each.body1895: + %t35 = load ptr, ptr %t29 + %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t33 + %t37 = load %S.gen.FnSig, ptr %t36 + store %S.gen.FnSig %t37, ptr %a38 + call void @finch.copy.S_gen_FnSig(ptr %a39, ptr %a38) + %t40 = load %S.gen.FnSig, ptr %a39 + store %S.gen.FnSig %t40, ptr %a41 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic1898, label %ok1899 +panic1898: + call void @finch_panic(ptr @.str.1098, i64 247, ptr @.str.1099) + unreachable +ok1899: + %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 0 + %t45 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 16 + %t46 = load i64, ptr %t45 + %t47 = load { ptr, i64, i64 }, ptr %t44 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = icmp uge i64 %t46, %t48 + br i1 %t49, label %range1900, label %inrange1901 +range1900: + call void @finch_panic_index(ptr @.str.1100, i64 247, i64 %t46, i64 %t48) + unreachable +inrange1901: + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = getelementptr inbounds %S.ast.Program, ptr %t50, i64 %t46 + %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i32 0, i32 8 + %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 17 + %t54 = load i64, ptr %t53 + %t55 = load { ptr, i64, i64 }, ptr %t52 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range1902, label %inrange1903 +range1902: + call void @finch_panic_index(ptr @.str.1101, i64 247, i64 %t54, i64 %t56) + unreachable +inrange1903: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 + %t60 = load %S.ast.Node, ptr %t59 + store %S.ast.Node %t60, ptr %a61 + call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) + %t63 = load %S.ast.Node, ptr %a62 + store %S.ast.Node %t63, ptr %a64 + %t65 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 7 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 + %t67 = load i64, ptr %t66 + %t68 = icmp sgt i64 %t67, 0 + br i1 %t68, label %then1904, label %endif1906 +then1904: + br label %each.step1896 +endif1906: + store { ptr, i64, i64 } zeroinitializer, ptr %a69 + %t70 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 13 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load i64, ptr %t71 + store i64 0, ptr %a73 + br label %for.cond1907 +for.cond1907: + %t74 = load i64, ptr %a73 + %t75 = icmp slt i64 %t74, %t72 + br i1 %t75, label %for.body1908, label %for.end1910 +for.body1908: + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + %t77 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 13 + %t78 = load i64, ptr %a73 + %t79 = load { ptr, i64, i64 }, ptr %t77 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range1911, label %inrange1912 +range1911: + call void @finch_panic_index(ptr @.str.1102, i64 253, i64 %t78, i64 %t80) + unreachable +inrange1912: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds %S.ast.Type, ptr %t82, i64 %t78 + %t84 = load %S.ast.Type, ptr %t83 + %t85 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t84) + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a86 + %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 + %t91 = load i64, ptr %a73 + %t92 = load { ptr, i64, i64 }, ptr %t90 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range1913, label %inrange1914 +range1913: + call void @finch_panic_index(ptr @.str.1104, i64 253, i64 %t91, i64 %t93) + unreachable +inrange1914: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t91 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t89, ptr %a99 + store { ptr, i64, i64 } %t97, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a98 + %t102 = load i64, ptr %t76 + %t103 = add i64 %t102, 1 + call void @finch_arr_reserve(ptr %a69, i64 %t103, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t104 = load ptr, ptr %a69 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 + store { ptr, i64, i64 } %t101, ptr %t105 + store i64 %t103, ptr %t76 + br label %for.step1909 +for.step1909: + %t106 = load i64, ptr %a73 + %t107 = add i64 %t106, 1 + store i64 %t107, ptr %a73 + br label %for.cond1907 +for.end1910: + %t108 = load ptr, ptr %a1 + %t109 = icmp eq ptr %t108, null + br i1 %t109, label %panic1915, label %ok1916 +panic1915: + call void @finch_panic(ptr @.str.1105, i64 255, ptr @.str.1106) + unreachable +ok1916: + %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 27 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 + %t112 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 + %t113 = load { ptr, i64, i64 }, ptr %t112 + store { ptr, i64, i64 } { ptr @.str.1107, i64 3, i64 0 }, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.1108, i64 1, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a118 + %t122 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 + %t123 = load { ptr, i64, i64 }, ptr %t122 + store { ptr, i64, i64 } %t121, ptr %a125 + store { ptr, i64, i64 } %t123, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t127, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.1109, i64 1, i64 0 }, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a128 + %t132 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t131, ptr %a135 + store { ptr, i64, i64 } %t133, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a134 + store { ptr, i64, i64 } %t137, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.1110, i64 1, i64 0 }, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a138 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic1917, label %ok1918 +panic1917: + call void @finch_panic(ptr @.str.1111, i64 255, ptr @.str.1112) + unreachable +ok1918: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 1 + %t145 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 + %t146 = load i64, ptr %t145 + %t147 = load { ptr, i64, i64 }, ptr %t144 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 %t146, %t148 + br i1 %t149, label %range1919, label %inrange1920 +range1919: + call void @finch_panic_index(ptr @.str.1113, i64 255, i64 %t146, i64 %t148) + unreachable +inrange1920: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t146 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t141, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t156, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.1114, i64 1, i64 0 }, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a157 + %t161 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 + %t162 = load i64, ptr %t161 + call void @finch_str_from_int(ptr %a163, i64 %t162) + %t164 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t160, ptr %a166 + store { ptr, i64, i64 } %t164, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a165 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.1115, i64 1, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a169 + %t173 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 + %t174 = load i64, ptr %t173 + call void @finch_str_from_int(ptr %a175, i64 %t174) + %t176 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t172, ptr %a178 + store { ptr, i64, i64 } %t176, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t180, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.1116, i64 1, i64 0 }, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a181 + %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 + %t186 = load i64, ptr %t185 + call void @finch_str_from_int(ptr %a187, i64 %t186) + %t188 = load { ptr, i64, i64 }, ptr %a187 + store { ptr, i64, i64 } %t184, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.1117, i64 1, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + %t196 = load { ptr, i64, i64 }, ptr %a193 + %t197 = load %S.gen.FnSig, ptr %a41 + %t198 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t197) + %t199 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t196, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.1118, i64 1, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a204 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1119, i64 1, i64 0 }, ptr %a209 + call void @finch_str_join(ptr %a210, ptr %a69, ptr %a209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t207, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a212 + %t216 = load i64, ptr %t111 + %t217 = add i64 %t216, 1 + call void @finch_arr_reserve(ptr %t110, i64 %t217, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t218 = load ptr, ptr %t110 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 + store { ptr, i64, i64 } %t215, ptr %t219 + store i64 %t217, ptr %t111 + br label %each.step1896 +each.step1896: + %t220 = load i64, ptr %a30 + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a30 + br label %each.cond1894 +each.end1897: + %t222 = load ptr, ptr %a1 + %t223 = icmp eq ptr %t222, null + br i1 %t223, label %panic1921, label %ok1922 +panic1921: + call void @finch_panic(ptr @.str.1120, i64 257, ptr @.str.1121) + unreachable +ok1922: + %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 16 + store i64 0, ptr %a225 + br label %each.cond1923 +each.cond1923: + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i32 0, i32 1 + %t227 = load i64, ptr %t226 + %t228 = load i64, ptr %a225 + %t229 = icmp slt i64 %t228, %t227 + br i1 %t229, label %each.body1924, label %each.end1926 +each.body1924: + %t230 = load ptr, ptr %t224 + %t231 = getelementptr inbounds %S.gen.Template, ptr %t230, i64 %t228 + %t232 = load %S.gen.Template, ptr %t231 + store %S.gen.Template %t232, ptr %a233 + call void @finch.copy.S_gen_Template(ptr %a234, ptr %a233) + %t235 = load %S.gen.Template, ptr %a234 + store %S.gen.Template %t235, ptr %a236 + %t237 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 6 + %t238 = load i1, ptr %t237 + br i1 %t238, label %then1927, label %endif1929 +then1927: + br label %each.step1925 +endif1929: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic1930, label %ok1931 +panic1930: + call void @finch_panic(ptr @.str.1122, i64 261, ptr @.str.1123) + unreachable +ok1931: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 0 + %t242 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 4 + %t243 = load i64, ptr %t242 + %t244 = load { ptr, i64, i64 }, ptr %t241 + %t245 = extractvalue { ptr, i64, i64 } %t244, 1 + %t246 = icmp uge i64 %t243, %t245 + br i1 %t246, label %range1932, label %inrange1933 +range1932: + call void @finch_panic_index(ptr @.str.1124, i64 261, i64 %t243, i64 %t245) + unreachable +inrange1933: + %t247 = extractvalue { ptr, i64, i64 } %t244, 0 + %t248 = getelementptr inbounds %S.ast.Program, ptr %t247, i64 %t243 + %t249 = getelementptr inbounds %S.ast.Program, ptr %t248, i32 0, i32 8 + %t250 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 5 + %t251 = load i64, ptr %t250 + %t252 = load { ptr, i64, i64 }, ptr %t249 + %t253 = extractvalue { ptr, i64, i64 } %t252, 1 + %t254 = icmp uge i64 %t251, %t253 + br i1 %t254, label %range1934, label %inrange1935 +range1934: + call void @finch_panic_index(ptr @.str.1125, i64 261, i64 %t251, i64 %t253) + unreachable +inrange1935: + %t255 = extractvalue { ptr, i64, i64 } %t252, 0 + %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 + %t257 = load %S.ast.Node, ptr %t256 + store %S.ast.Node %t257, ptr %a258 + call void @finch.copy.S_ast_Node(ptr %a259, ptr %a258) + %t260 = load %S.ast.Node, ptr %a259 + store %S.ast.Node %t260, ptr %a261 + %t262 = load ptr, ptr %a1 + %t263 = icmp eq ptr %t262, null + br i1 %t263, label %panic1936, label %ok1937 +panic1936: + call void @finch_panic(ptr @.str.1126, i64 262, ptr @.str.1127) + unreachable +ok1937: + %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 27 + %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %t264, i32 0, i32 1 + %t266 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 0 + %t267 = load { ptr, i64, i64 }, ptr %t266 + store { ptr, i64, i64 } { ptr @.str.1128, i64 3, i64 0 }, ptr %a269 + store { ptr, i64, i64 } %t267, ptr %a270 + call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a268 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.1129, i64 1, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a272 + %t276 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 1 + %t277 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t275, ptr %a279 + store { ptr, i64, i64 } %t277, ptr %a280 + call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) + %t281 = load { ptr, i64, i64 }, ptr %a278 + store { ptr, i64, i64 } %t281, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.1130, i64 1, i64 0 }, ptr %a284 + call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a282 + %t286 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 2 + %t287 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } %t285, ptr %a289 + store { ptr, i64, i64 } %t287, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a288 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.1131, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a292 + %t296 = load ptr, ptr %a1 + %t297 = icmp eq ptr %t296, null + br i1 %t297, label %panic1938, label %ok1939 +panic1938: + call void @finch_panic(ptr @.str.1132, i64 262, ptr @.str.1133) + unreachable +ok1939: + %t298 = getelementptr inbounds %S.gen.Gen, ptr %t296, i32 0, i32 1 + %t299 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 13 + %t300 = load i64, ptr %t299 + %t301 = load { ptr, i64, i64 }, ptr %t298 + %t302 = extractvalue { ptr, i64, i64 } %t301, 1 + %t303 = icmp uge i64 %t300, %t302 + br i1 %t303, label %range1940, label %inrange1941 +range1940: + call void @finch_panic_index(ptr @.str.1134, i64 262, i64 %t300, i64 %t302) + unreachable +inrange1941: + %t304 = extractvalue { ptr, i64, i64 } %t301, 0 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i64 %t300 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t295, ptr %a308 + store { ptr, i64, i64 } %t306, ptr %a309 + call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) + %t310 = load { ptr, i64, i64 }, ptr %a307 + store { ptr, i64, i64 } %t310, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.1135, i64 1, i64 0 }, ptr %a313 + call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a311 + %t315 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 11 + %t316 = load i64, ptr %t315 + call void @finch_str_from_int(ptr %a317, i64 %t316) + %t318 = load { ptr, i64, i64 }, ptr %a317 + store { ptr, i64, i64 } %t314, ptr %a320 + store { ptr, i64, i64 } %t318, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + %t322 = load { ptr, i64, i64 }, ptr %a319 + store { ptr, i64, i64 } %t322, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.1136, i64 1, i64 0 }, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a323 + %t327 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 12 + %t328 = load i64, ptr %t327 + call void @finch_str_from_int(ptr %a329, i64 %t328) + %t330 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t326, ptr %a332 + store { ptr, i64, i64 } %t330, ptr %a333 + call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a331 + store { ptr, i64, i64 } %t334, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a337 + call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a335 + %t339 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 14 + %t340 = load i64, ptr %t339 + call void @finch_str_from_int(ptr %a341, i64 %t340) + %t342 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t338, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a347 + %t351 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 1 + %t352 = load { ptr, i64, i64 }, ptr %t351 + store { ptr, i64, i64 } { ptr @.str.1139, i64 3, i64 0 }, ptr %a354 + store { ptr, i64, i64 } %t352, ptr %a355 + call void @finch_str_concat(ptr %a353, ptr %a354, ptr %a355) + %t356 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t356, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.1140, i64 1, i64 0 }, ptr %a359 + call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) + %t360 = load { ptr, i64, i64 }, ptr %a357 + %t361 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 3 + %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1141, i64 2, i64 0 }, ptr %a363 + call void @finch_str_join(ptr %a364, ptr %t361, ptr %a363) + %t365 = load { ptr, i64, i64 }, ptr %a364 + store { ptr, i64, i64 } %t360, ptr %a367 + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + %t369 = load { ptr, i64, i64 }, ptr %a366 + store { ptr, i64, i64 } %t369, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1142, i64 6, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a370 + %t374 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t373) + store { ptr, i64, i64 } %t350, ptr %a376 + store { ptr, i64, i64 } %t374, ptr %a377 + call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) + %t378 = load { ptr, i64, i64 }, ptr %a375 + store { ptr, i64, i64 } %t378, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a381 + call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a379 + %t383 = load i64, ptr %t265 + %t384 = add i64 %t383, 1 + call void @finch_arr_reserve(ptr %t264, i64 %t384, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t385 = load ptr, ptr %t264 + %t386 = getelementptr inbounds { ptr, i64, i64 }, ptr %t385, i64 %t383 + store { ptr, i64, i64 } %t382, ptr %t386 + store i64 %t384, ptr %t265 + br label %each.step1925 +each.step1925: + %t387 = load i64, ptr %a225 + %t388 = add i64 %t387, 1 + store i64 %t388, ptr %a225 + br label %each.cond1923 +each.end1926: + %t389 = load ptr, ptr %a1 + %t390 = icmp eq ptr %t389, null + br i1 %t390, label %panic1942, label %ok1943 +panic1942: + call void @finch_panic(ptr @.str.1144, i64 264, ptr @.str.1145) + unreachable +ok1943: + %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 15 + store i64 0, ptr %a392 + br label %each.cond1944 +each.cond1944: + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t391, i32 0, i32 1 + %t394 = load i64, ptr %t393 + %t395 = load i64, ptr %a392 + %t396 = icmp slt i64 %t395, %t394 + br i1 %t396, label %each.body1945, label %each.end1947 +each.body1945: + %t397 = load ptr, ptr %t391 + %t398 = getelementptr inbounds %S.gen.StructDef, ptr %t397, i64 %t395 + %t399 = load %S.gen.StructDef, ptr %t398 + store %S.gen.StructDef %t399, ptr %a400 + call void @finch.copy.S_gen_StructDef(ptr %a401, ptr %a400) + %t402 = load %S.gen.StructDef, ptr %a401 + store %S.gen.StructDef %t402, ptr %a403 + %t404 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 2 + %t405 = load i1, ptr %t404 + br label %logic.from1948 +logic.from1948: + br i1 %t405, label %logic.end1950, label %logic.rhs1949 +logic.rhs1949: + %t406 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 5 + %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i32 0, i32 1 + %t408 = load i64, ptr %t407 + %t409 = icmp sgt i64 %t408, 0 + br label %logic.rend1951 +logic.rend1951: + br label %logic.end1950 +logic.end1950: + %t410 = phi i1 [ true, %logic.from1948 ], [ %t409, %logic.rend1951 ] + br i1 %t410, label %then1952, label %endif1954 +then1952: + br label %each.step1946 +endif1954: + %t411 = load ptr, ptr %a1 + %t412 = icmp eq ptr %t411, null + br i1 %t412, label %panic1955, label %ok1956 +panic1955: + call void @finch_panic(ptr @.str.1146, i64 268, ptr @.str.1147) + unreachable +ok1956: + %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 0 + %t414 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 13 + %t415 = load i64, ptr %t414 + %t416 = load { ptr, i64, i64 }, ptr %t413 + %t417 = extractvalue { ptr, i64, i64 } %t416, 1 + %t418 = icmp uge i64 %t415, %t417 + br i1 %t418, label %range1957, label %inrange1958 +range1957: + call void @finch_panic_index(ptr @.str.1148, i64 268, i64 %t415, i64 %t417) + unreachable +inrange1958: + %t419 = extractvalue { ptr, i64, i64 } %t416, 0 + %t420 = getelementptr inbounds %S.ast.Program, ptr %t419, i64 %t415 + %t421 = getelementptr inbounds %S.ast.Program, ptr %t420, i32 0, i32 6 + %t422 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 14 + %t423 = load i64, ptr %t422 + %t424 = load { ptr, i64, i64 }, ptr %t421 + %t425 = extractvalue { ptr, i64, i64 } %t424, 1 + %t426 = icmp uge i64 %t423, %t425 + br i1 %t426, label %range1959, label %inrange1960 +range1959: + call void @finch_panic_index(ptr @.str.1149, i64 268, i64 %t423, i64 %t425) + unreachable +inrange1960: + %t427 = extractvalue { ptr, i64, i64 } %t424, 0 + %t428 = getelementptr inbounds %S.ast.Node, ptr %t427, i64 %t423 + %t429 = load %S.ast.Node, ptr %t428 + store %S.ast.Node %t429, ptr %a430 + call void @finch.copy.S_ast_Node(ptr %a431, ptr %a430) + %t432 = load %S.ast.Node, ptr %a431 + store %S.ast.Node %t432, ptr %a433 + %t434 = load ptr, ptr %a1 + %t435 = icmp eq ptr %t434, null + br i1 %t435, label %panic1961, label %ok1962 +panic1961: + call void @finch_panic(ptr @.str.1150, i64 269, ptr @.str.1151) + unreachable +ok1962: + %t436 = getelementptr inbounds %S.gen.Gen, ptr %t434, i32 0, i32 27 + %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t436, i32 0, i32 1 + %t438 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 0 + %t439 = load { ptr, i64, i64 }, ptr %t438 + store { ptr, i64, i64 } { ptr @.str.1152, i64 3, i64 0 }, ptr %a441 + store { ptr, i64, i64 } %t439, ptr %a442 + call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a440 + store { ptr, i64, i64 } %t443, ptr %a445 + store { ptr, i64, i64 } { ptr @.str.1153, i64 1, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + %t447 = load { ptr, i64, i64 }, ptr %a444 + %t448 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 1 + %t449 = load { ptr, i64, i64 }, ptr %t448 + store { ptr, i64, i64 } %t447, ptr %a451 + store { ptr, i64, i64 } %t449, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + %t453 = load { ptr, i64, i64 }, ptr %a450 + store { ptr, i64, i64 } %t453, ptr %a455 + store { ptr, i64, i64 } { ptr @.str.1154, i64 1, i64 0 }, ptr %a456 + call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) + %t457 = load { ptr, i64, i64 }, ptr %a454 + %t458 = load ptr, ptr %a1 + %t459 = icmp eq ptr %t458, null + br i1 %t459, label %panic1963, label %ok1964 +panic1963: + call void @finch_panic(ptr @.str.1155, i64 269, ptr @.str.1156) + unreachable +ok1964: + %t460 = getelementptr inbounds %S.gen.Gen, ptr %t458, i32 0, i32 1 + %t461 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 13 + %t462 = load i64, ptr %t461 + %t463 = load { ptr, i64, i64 }, ptr %t460 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = icmp uge i64 %t462, %t464 + br i1 %t465, label %range1965, label %inrange1966 +range1965: + call void @finch_panic_index(ptr @.str.1157, i64 269, i64 %t462, i64 %t464) + unreachable +inrange1966: + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i64 %t462 + %t468 = load { ptr, i64, i64 }, ptr %t467 + store { ptr, i64, i64 } %t457, ptr %a470 + store { ptr, i64, i64 } %t468, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + %t472 = load { ptr, i64, i64 }, ptr %a469 + store { ptr, i64, i64 } %t472, ptr %a474 + store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a475 + call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) + %t476 = load { ptr, i64, i64 }, ptr %a473 + %t477 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 11 + %t478 = load i64, ptr %t477 + call void @finch_str_from_int(ptr %a479, i64 %t478) + %t480 = load { ptr, i64, i64 }, ptr %a479 + store { ptr, i64, i64 } %t476, ptr %a482 + store { ptr, i64, i64 } %t480, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + %t484 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t484, ptr %a486 + store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a487 + call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a485 + %t489 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 12 + %t490 = load i64, ptr %t489 + call void @finch_str_from_int(ptr %a491, i64 %t490) + %t492 = load { ptr, i64, i64 }, ptr %a491 + store { ptr, i64, i64 } %t488, ptr %a494 + store { ptr, i64, i64 } %t492, ptr %a495 + call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a493 + %t497 = load i64, ptr %t437 + %t498 = add i64 %t497, 1 + call void @finch_arr_reserve(ptr %t436, i64 %t498, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t499 = load ptr, ptr %t436 + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i64 %t497 + store { ptr, i64, i64 } %t496, ptr %t500 + store i64 %t498, ptr %t437 + %t501 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 11 + %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 + %t503 = load i64, ptr %t502 + store i64 0, ptr %a504 + br label %for.cond1967 +for.cond1967: + %t505 = load i64, ptr %a504 + %t506 = icmp slt i64 %t505, %t503 + br i1 %t506, label %for.body1968, label %for.end1970 +for.body1968: + %t507 = load ptr, ptr %a1 + %t508 = icmp eq ptr %t507, null + br i1 %t508, label %panic1971, label %ok1972 +panic1971: + call void @finch_panic(ptr @.str.1160, i64 271, ptr @.str.1161) + unreachable +ok1972: + %t509 = getelementptr inbounds %S.gen.Gen, ptr %t507, i32 0, i32 27 + %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 + %t511 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 0 + %t512 = load { ptr, i64, i64 }, ptr %t511 + store { ptr, i64, i64 } { ptr @.str.1162, i64 4, i64 0 }, ptr %a514 + store { ptr, i64, i64 } %t512, ptr %a515 + call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a513 + store { ptr, i64, i64 } %t516, ptr %a518 + store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a519 + call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519) + %t520 = load { ptr, i64, i64 }, ptr %a517 + %t521 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 1 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t520, ptr %a524 + store { ptr, i64, i64 } %t522, ptr %a525 + call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } %t526, ptr %a528 + store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a529 + call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a527 + %t531 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 11 + %t532 = load i64, ptr %a504 + %t533 = load { ptr, i64, i64 }, ptr %t531 + %t534 = extractvalue { ptr, i64, i64 } %t533, 1 + %t535 = icmp uge i64 %t532, %t534 + br i1 %t535, label %range1973, label %inrange1974 +range1973: + call void @finch_panic_index(ptr @.str.1165, i64 271, i64 %t532, i64 %t534) + unreachable +inrange1974: + %t536 = extractvalue { ptr, i64, i64 } %t533, 0 + %t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t532 + %t538 = load { ptr, i64, i64 }, ptr %t537 + store { ptr, i64, i64 } %t530, ptr %a540 + store { ptr, i64, i64 } %t538, ptr %a541 + call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541) + %t542 = load { ptr, i64, i64 }, ptr %a539 + store { ptr, i64, i64 } %t542, ptr %a544 + store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a545 + call void @finch_str_concat(ptr %a543, ptr %a544, ptr %a545) + %t546 = load { ptr, i64, i64 }, ptr %a543 + %t547 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 12 + %t548 = load i64, ptr %a504 + %t549 = load { ptr, i64, i64 }, ptr %t547 + %t550 = extractvalue { ptr, i64, i64 } %t549, 1 + %t551 = icmp uge i64 %t548, %t550 + br i1 %t551, label %range1975, label %inrange1976 +range1975: + call void @finch_panic_index(ptr @.str.1167, i64 271, i64 %t548, i64 %t550) + unreachable +inrange1976: + %t552 = extractvalue { ptr, i64, i64 } %t549, 0 + %t553 = getelementptr inbounds %S.ast.Type, ptr %t552, i64 %t548 + %t554 = load %S.ast.Type, ptr %t553 + %t555 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t554) + store { ptr, i64, i64 } %t546, ptr %a557 + store { ptr, i64, i64 } %t555, ptr %a558 + call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) + %t559 = load { ptr, i64, i64 }, ptr %a556 + %t560 = load i64, ptr %t510 + %t561 = add i64 %t560, 1 + call void @finch_arr_reserve(ptr %t509, i64 %t561, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t562 = load ptr, ptr %t509 + %t563 = getelementptr inbounds { ptr, i64, i64 }, ptr %t562, i64 %t560 + store { ptr, i64, i64 } %t559, ptr %t563 + store i64 %t561, ptr %t510 + br label %for.step1969 +for.step1969: + %t564 = load i64, ptr %a504 + %t565 = add i64 %t564, 1 + store i64 %t565, ptr %a504 + br label %for.cond1967 +for.end1970: + br label %each.step1946 +each.step1946: + %t566 = load i64, ptr %a392 + %t567 = add i64 %t566, 1 + store i64 %t567, ptr %a392 + br label %each.cond1944 +each.end1947: + %t568 = load ptr, ptr %a1 + %t569 = icmp eq ptr %t568, null + br i1 %t569, label %panic1977, label %ok1978 +panic1977: + call void @finch_panic(ptr @.str.1168, i64 274, ptr @.str.1169) + unreachable +ok1978: + %t570 = getelementptr inbounds %S.gen.Gen, ptr %t568, i32 0, i32 0 + %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %t570, i32 0, i32 1 + %t572 = load i64, ptr %t571 + store i64 0, ptr %a573 + br label %for.cond1979 +for.cond1979: + %t574 = load i64, ptr %a573 + %t575 = icmp slt i64 %t574, %t572 + br i1 %t575, label %for.body1980, label %for.end1982 +for.body1980: + %t576 = load ptr, ptr %a1 + %t577 = icmp eq ptr %t576, null + br i1 %t577, label %panic1983, label %ok1984 +panic1983: + call void @finch_panic(ptr @.str.1170, i64 275, ptr @.str.1171) + unreachable +ok1984: + %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 0 + %t579 = load i64, ptr %a573 + %t580 = load { ptr, i64, i64 }, ptr %t578 + %t581 = extractvalue { ptr, i64, i64 } %t580, 1 + %t582 = icmp uge i64 %t579, %t581 + br i1 %t582, label %range1985, label %inrange1986 +range1985: + call void @finch_panic_index(ptr @.str.1172, i64 275, i64 %t579, i64 %t581) + unreachable +inrange1986: + %t583 = extractvalue { ptr, i64, i64 } %t580, 0 + %t584 = getelementptr inbounds %S.ast.Program, ptr %t583, i64 %t579 + %t585 = getelementptr inbounds %S.ast.Program, ptr %t584, i32 0, i32 7 + store i64 0, ptr %a586 + br label %each.cond1987 +each.cond1987: + %t587 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i32 0, i32 1 + %t588 = load i64, ptr %t587 + %t589 = load i64, ptr %a586 + %t590 = icmp slt i64 %t589, %t588 + br i1 %t590, label %each.body1988, label %each.end1990 +each.body1988: + %t591 = load ptr, ptr %t585 + %t592 = getelementptr inbounds %S.ast.Node, ptr %t591, i64 %t589 + %t593 = load %S.ast.Node, ptr %t592 + store %S.ast.Node %t593, ptr %a594 + call void @finch.copy.S_ast_Node(ptr %a595, ptr %a594) + %t596 = load %S.ast.Node, ptr %a595 + store %S.ast.Node %t596, ptr %a597 + store { ptr, i64, i64 } { ptr @.str.1173, i64 0, i64 0 }, ptr %a598 + store { ptr, i64, i64 } zeroinitializer, ptr %a599 + %t600 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 9 + store i64 0, ptr %a601 + br label %each.cond1991 +each.cond1991: + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i32 0, i32 1 + %t603 = load i64, ptr %t602 + %t604 = load i64, ptr %a601 + %t605 = icmp slt i64 %t604, %t603 + br i1 %t605, label %each.body1992, label %each.end1994 +each.body1992: + %t606 = load ptr, ptr %t600 + %t607 = getelementptr inbounds %S.ast.Node, ptr %t606, i64 %t604 + %t608 = load %S.ast.Node, ptr %t607 + store %S.ast.Node %t608, ptr %a609 + %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a599, i32 0, i32 1 + %t611 = getelementptr inbounds %S.ast.Node, ptr %a609, i32 0, i32 1 + %t612 = load { ptr, i64, i64 }, ptr %t611 + store { ptr, i64, i64 } %t612, ptr %a613 + call void @finch_str_copy(ptr %a614, ptr %a613) + %t615 = load { ptr, i64, i64 }, ptr %a614 + %t616 = load i64, ptr %t610 + %t617 = add i64 %t616, 1 + call void @finch_arr_reserve(ptr %a599, i64 %t617, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t618 = load ptr, ptr %a599 + %t619 = getelementptr inbounds { ptr, i64, i64 }, ptr %t618, i64 %t616 + store { ptr, i64, i64 } %t615, ptr %t619 + store i64 %t617, ptr %t610 + br label %each.step1993 +each.step1993: + %t620 = load i64, ptr %a601 + %t621 = add i64 %t620, 1 + store i64 %t621, ptr %a601 + br label %each.cond1991 +each.end1994: + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %a599, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1174, i64 1, i64 0 }, ptr %a623 + call void @finch_str_join(ptr %a624, ptr %a599, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store { ptr, i64, i64 } %t625, ptr %a598 + %t626 = load ptr, ptr %a1 + %t627 = icmp eq ptr %t626, null + br i1 %t627, label %panic1995, label %ok1996 +panic1995: + call void @finch_panic(ptr @.str.1175, i64 282, ptr @.str.1176) + unreachable +ok1996: + %t628 = getelementptr inbounds %S.gen.Gen, ptr %t626, i32 0, i32 27 + %t629 = getelementptr inbounds { ptr, i64, i64 }, ptr %t628, i32 0, i32 1 + %t630 = load ptr, ptr %a1 + %t631 = icmp eq ptr %t630, null + br i1 %t631, label %panic1997, label %ok1998 +panic1997: + call void @finch_panic(ptr @.str.1178, i64 282, ptr @.str.1179) + unreachable +ok1998: + %t632 = getelementptr inbounds %S.gen.Gen, ptr %t630, i32 0, i32 0 + %t633 = load i64, ptr %a573 + %t634 = load { ptr, i64, i64 }, ptr %t632 + %t635 = extractvalue { ptr, i64, i64 } %t634, 1 + %t636 = icmp uge i64 %t633, %t635 + br i1 %t636, label %range1999, label %inrange2000 +range1999: + call void @finch_panic_index(ptr @.str.1180, i64 282, i64 %t633, i64 %t635) + unreachable +inrange2000: + %t637 = extractvalue { ptr, i64, i64 } %t634, 0 + %t638 = getelementptr inbounds %S.ast.Program, ptr %t637, i64 %t633 + %t639 = getelementptr inbounds %S.ast.Program, ptr %t638, i32 0, i32 0 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } { ptr @.str.1177, i64 3, i64 0 }, ptr %a642 + store { ptr, i64, i64 } %t640, ptr %a643 + call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a641 + store { ptr, i64, i64 } %t644, ptr %a646 + store { ptr, i64, i64 } { ptr @.str.1181, i64 1, i64 0 }, ptr %a647 + call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) + %t648 = load { ptr, i64, i64 }, ptr %a645 + %t649 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 1 + %t650 = load { ptr, i64, i64 }, ptr %t649 + store { ptr, i64, i64 } %t648, ptr %a652 + store { ptr, i64, i64 } %t650, ptr %a653 + call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) + %t654 = load { ptr, i64, i64 }, ptr %a651 + store { ptr, i64, i64 } %t654, ptr %a656 + store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a657 + call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) + %t658 = load { ptr, i64, i64 }, ptr %a655 + %t659 = load ptr, ptr %a1 + %t660 = icmp eq ptr %t659, null + br i1 %t660, label %panic2001, label %ok2002 +panic2001: + call void @finch_panic(ptr @.str.1183, i64 282, ptr @.str.1184) + unreachable +ok2002: + %t661 = getelementptr inbounds %S.gen.Gen, ptr %t659, i32 0, i32 1 + %t662 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 13 + %t663 = load i64, ptr %t662 + %t664 = load { ptr, i64, i64 }, ptr %t661 + %t665 = extractvalue { ptr, i64, i64 } %t664, 1 + %t666 = icmp uge i64 %t663, %t665 + br i1 %t666, label %range2003, label %inrange2004 +range2003: + call void @finch_panic_index(ptr @.str.1185, i64 282, i64 %t663, i64 %t665) + unreachable +inrange2004: + %t667 = extractvalue { ptr, i64, i64 } %t664, 0 + %t668 = getelementptr inbounds { ptr, i64, i64 }, ptr %t667, i64 %t663 + %t669 = load { ptr, i64, i64 }, ptr %t668 + store { ptr, i64, i64 } %t658, ptr %a671 + store { ptr, i64, i64 } %t669, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + %t673 = load { ptr, i64, i64 }, ptr %a670 + store { ptr, i64, i64 } %t673, ptr %a675 + store { ptr, i64, i64 } { ptr @.str.1186, i64 1, i64 0 }, ptr %a676 + call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) + %t677 = load { ptr, i64, i64 }, ptr %a674 + %t678 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 11 + %t679 = load i64, ptr %t678 + call void @finch_str_from_int(ptr %a680, i64 %t679) + %t681 = load { ptr, i64, i64 }, ptr %a680 + store { ptr, i64, i64 } %t677, ptr %a683 + store { ptr, i64, i64 } %t681, ptr %a684 + call void @finch_str_concat(ptr %a682, ptr %a683, ptr %a684) + %t685 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t685, ptr %a687 + store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a688 + call void @finch_str_concat(ptr %a686, ptr %a687, ptr %a688) + %t689 = load { ptr, i64, i64 }, ptr %a686 + %t690 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 12 + %t691 = load i64, ptr %t690 + call void @finch_str_from_int(ptr %a692, i64 %t691) + %t693 = load { ptr, i64, i64 }, ptr %a692 + store { ptr, i64, i64 } %t689, ptr %a695 + store { ptr, i64, i64 } %t693, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a694 + store { ptr, i64, i64 } %t697, ptr %a699 + store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a700 + call void @finch_str_concat(ptr %a698, ptr %a699, ptr %a700) + %t701 = load { ptr, i64, i64 }, ptr %a698 + %t702 = load { ptr, i64, i64 }, ptr %a598 + store { ptr, i64, i64 } %t701, ptr %a704 + store { ptr, i64, i64 } %t702, ptr %a705 + call void @finch_str_concat(ptr %a703, ptr %a704, ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a703 + %t707 = load i64, ptr %t629 + %t708 = add i64 %t707, 1 + call void @finch_arr_reserve(ptr %t628, i64 %t708, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t709 = load ptr, ptr %t628 + %t710 = getelementptr inbounds { ptr, i64, i64 }, ptr %t709, i64 %t707 + store { ptr, i64, i64 } %t706, ptr %t710 + store i64 %t708, ptr %t629 + br label %each.step1989 +each.step1989: + %t711 = load i64, ptr %a586 + %t712 = add i64 %t711, 1 + store i64 %t712, ptr %a586 + br label %each.cond1987 +each.end1990: + br label %for.step1981 +for.step1981: + %t713 = load i64, ptr %a573 + %t714 = add i64 %t713, 1 + store i64 %t714, ptr %a573 + br label %for.cond1979 +for.end1982: + ret void +} + +define internal void @finch.gen.fail(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic2005, label %ok2006 +panic2005: + call void @finch_panic(ptr @.str.1189, i64 288, ptr @.str.1190) + unreachable +ok2006: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + br label %logic.from2007 +logic.from2007: + br i1 %t7, label %logic.rhs2008, label %logic.end2009 +logic.rhs2008: + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic2010, label %ok2011 +panic2010: + call void @finch_panic(ptr @.str.1191, i64 288, ptr @.str.1192) + unreachable +ok2011: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 27 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = icmp sgt i64 %t12, 0 + br label %logic.rend2012 +logic.rend2012: + br label %logic.end2009 +logic.end2009: + %t14 = phi i1 [ false, %logic.from2007 ], [ %t13, %logic.rend2012 ] + br i1 %t14, label %then2013, label %endif2015 +then2013: + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic2016, label %ok2017 +panic2016: + call void @finch_panic(ptr @.str.1193, i64 289, ptr @.str.1194) + unreachable +ok2017: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 27 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a19 + call void @finch_str_join(ptr %a20, ptr %t17, ptr %a19) + %t21 = load { ptr, i64, i64 }, ptr %a20 + %t22 = extractvalue { ptr, i64, i64 } %t21, 1 + %t23 = trunc i64 %t22 to i32 + %t24 = extractvalue { ptr, i64, i64 } %t21, 0 + %t25 = icmp eq ptr %t24, null + %t26 = select i1 %t25, ptr @.str.1196, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.1197, i32 %t23, ptr %t26) + %t28 = call i32 (ptr, ...) @printf(ptr @.str.1198) + br label %endif2015 +endif2015: + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic2018, label %ok2019 +panic2018: + call void @finch_panic(ptr @.str.1199, i64 291, ptr @.str.1200) + unreachable +ok2019: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 1 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t33 = load i64, ptr %t32 + %t34 = load { ptr, i64, i64 }, ptr %t31 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range2020, label %inrange2021 +range2020: + call void @finch_panic_index(ptr @.str.1201, i64 291, i64 %t33, i64 %t35) + unreachable +inrange2021: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t33 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1202, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a40 + %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t45 = load i64, ptr %t44 + call void @finch_str_from_int(ptr %a46, i64 %t45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t43, ptr %a49 + store { ptr, i64, i64 } %t47, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + %t56 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t57 = load i64, ptr %t56 + call void @finch_str_from_int(ptr %a58, i64 %t57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t55, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.1204, i64 9, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + %t68 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t67, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = load ptr, ptr %a1 + %t74 = icmp eq ptr %t73, null + br i1 %t74, label %panic2022, label %ok2023 +panic2022: + call void @finch_panic(ptr @.str.1205, i64 291, ptr @.str.1206) + unreachable +ok2023: + %t75 = getelementptr inbounds %S.gen.Gen, ptr %t73, i32 0, i32 19 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } %t72, ptr %a78 + store { ptr, i64, i64 } %t76, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a77 + %t81 = extractvalue { ptr, i64, i64 } %t80, 1 + %t82 = trunc i64 %t81 to i32 + %t83 = extractvalue { ptr, i64, i64 } %t80, 0 + %t84 = icmp eq ptr %t83, null + %t85 = select i1 %t84, ptr @.str.1207, ptr %t83 + %t86 = call i32 (ptr, ...) @printf(ptr @.str.1208, i32 %t82, ptr %t85) + %t87 = call i32 (ptr, ...) @printf(ptr @.str.1209) + %t88 = trunc i64 1 to i32 + %t89 = call i32 @fflush(ptr null) + call void @exit(i32 %t88) + ret void +} + +define internal void @finch.gen.emit(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + 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) + unreachable +ok2025: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 34 + %t6 = load i64, ptr %t5 + %t7 = icmp sge i64 %t6, 0 + br label %logic.from2026 +logic.from2026: + br i1 %t7, label %logic.rhs2027, label %logic.end2028 +logic.rhs2027: + %t8 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t8, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1213, i64 5, i64 0 }, ptr %a11 + %t12 = call i64 @finch_str_find(ptr %a9, ptr %a11) + %t13 = icmp sge i64 %t12, 0 + br label %logic.rend2029 +logic.rend2029: + br label %logic.end2028 +logic.end2028: + %t14 = phi i1 [ false, %logic.from2026 ], [ %t13, %logic.rend2029 ] + br i1 %t14, label %then2030, label %endif2032 +then2030: + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic2033, label %ok2034 +panic2033: + call void @finch_panic(ptr @.str.1214, i64 298, ptr @.str.1215) + unreachable +ok2034: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 4 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1216, i64 2, i64 0 }, ptr %a21 + store { ptr, i64, i64 } %t19, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t23, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1217, i64 8, i64 0 }, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a24 + %t28 = load ptr, ptr %a1 + %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 + 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) + 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 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.tmpName(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %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) + unreachable +ok2038: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 6 + %t5 = load i64, ptr %t4 + %t6 = add i64 %t5, 1 + store i64 %t6, ptr %t4 + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic2039, label %ok2040 +panic2039: + call void @finch_panic(ptr @.str.1224, i64 306, ptr @.str.1225) + unreachable +ok2040: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 6 + %t10 = load i64, ptr %t9 + call void @finch_str_from_int(ptr %a11, i64 %t10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1223, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } %t12, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + ret { ptr, i64, i64 } %t16 +} + +define internal { ptr, i64, i64 } @finch.gen.newLabel(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %a17 = 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) + unreachable +ok2042: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 7 + %t6 = load i64, ptr %t5 + %t7 = add i64 %t6, 1 + store i64 %t7, ptr %t5 + %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) + unreachable +ok2044: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 7 + %t12 = load i64, ptr %t11 + call void @finch_str_from_int(ptr %a13, i64 %t12) + %t14 = load { ptr, i64, i64 }, ptr %a13 + 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 +} + +define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 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 %panic2045, label %ok2046 +panic2045: + call void @finch_panic(ptr @.str.1230, i64 315, ptr @.str.1231) + unreachable +ok2046: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 4 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + %t12 = load i64, ptr %t6 + %t13 = add i64 %t12, 1 + call void @finch_arr_reserve(ptr %t5, i64 %t13, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t14 = load ptr, ptr %t5 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t12 + store { ptr, i64, i64 } %t11, ptr %t15 + 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) + unreachable +ok2048: + %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 + store i1 false, ptr %t18 + ret void +} + +define internal void @finch.gen.br(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + 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) + unreachable +ok2050: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 9 + %t6 = load i1, ptr %t5 + %t7 = xor i1 %t6, true + br i1 %t7, label %then2051, label %endif2053 +then2051: + %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 } %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) + unreachable +ok2055: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9 + store i1 true, ptr %t16 + br label %endif2053 +endif2053: + ret void +} + +define internal void @finch.gen.condBr(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = 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 + %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 + %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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 } %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 + 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 } %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) + unreachable +ok2057: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9 + store i1 true, ptr %t31 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.alloca(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %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 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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) + unreachable +ok2059: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 6 + %t6 = load i64, ptr %t5 + %t7 = add i64 %t6, 1 + store i64 %t7, ptr %t5 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic2060, label %ok2061 +panic2060: + call void @finch_panic(ptr @.str.1248, i64 333, ptr @.str.1249) + unreachable +ok2061: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 6 + %t11 = load i64, ptr %t10 + call void @finch_str_from_int(ptr %a12, i64 %t11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1247, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a18 + %t19 = load ptr, ptr %a1 + %t20 = icmp eq ptr %t19, null + br i1 %t20, label %panic2062, label %ok2063 +panic2062: + call void @finch_panic(ptr @.str.1250, i64 334, ptr @.str.1251) + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a6 = 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 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t4) + store { ptr, i64, i64 } %t5, ptr %a6 + %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 + 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 +} + +define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = 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 + %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 + %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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 } %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 + 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 } %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) + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.spill(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + %a9 = 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 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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 + %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 +} + +define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a5 = 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 + %a13 = 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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t3) + store { ptr, i64, i64 } %t4, ptr %a5 + %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 + 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 } %t17, ptr %a18 + call void @finch_str_copy(ptr %a19, ptr %a18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + ret { ptr, i64, i64 } %t20 +} + +define internal i1 @finch.gen.has({ 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 i64, align 16 + %a8 = alloca i64, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t4 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a5 + %t6 = load i64, ptr %t3 + %t7 = load ptr, ptr %a1 + store i64 0, ptr %a8 + br label %find.cond2064 +find.cond2064: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t6 + br i1 %t10, label %find.body2065, label %find.end2068 +find.body2065: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 %t9 + %t12 = load { ptr, i64, i64 }, ptr %t11 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } %t4, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp ne i32 %t15, 0 + br i1 %t16, label %find.hit2066, label %find.next2067 +find.hit2066: + store i64 %t9, ptr %a5 + br label %find.end2068 +find.next2067: + %t17 = add i64 %t9, 1 + store i64 %t17, ptr %a8 + br label %find.cond2064 +find.end2068: + %t18 = load i64, ptr %a5 + %t19 = icmp sge i64 %t18, 0 + ret i1 %t19 +} + +define internal %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + %t3 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t2) + ret %S.ast.Type %t3 +} + +define internal i1 @finch.gen.isSigned(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = 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 + %a14 = 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 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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 + %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: + %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 + %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: + %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 + %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: + %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 + %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 ] + ret i1 %t30 +} + +define internal i1 @finch.gen.isUnsigned(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = 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 + %a14 = 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 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = 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 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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 + %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: + %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 + %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: + %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 + %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: + %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 + %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 ] + ret i1 %t30 +} + +define internal i1 @finch.gen.isInt(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + 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: + %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 ] + ret i1 %t6 +} + +define internal i1 @finch.gen.isFloat(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = 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.1269, i64 5, i64 0 }, ptr %a5 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br label %logic.from2097 +logic.from2097: + br i1 %t7, label %logic.end2099, label %logic.rhs2098 +logic.rhs2098: + %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1270, i64 3, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br label %logic.rend2100 +logic.rend2100: + br label %logic.end2099 +logic.end2099: + %t14 = phi i1 [ true, %logic.from2097 ], [ %t13, %logic.rend2100 ] + ret i1 %t14 +} + +define internal i1 @finch.gen.isNumber(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + 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: + %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 ] + ret i1 %t6 +} + +define internal i64 @finch.gen.bitsOf(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = 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 + %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 + %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 + %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 + %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 + 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 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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 + %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) + %t12 = icmp ne i32 %t11, 0 + br i1 %t12, label %then2105, label %endif2107 +then2105: + ret i64 1 +endif2107: + %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 + %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: + %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 + %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: + %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 + %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: + ret i64 8 +endif2118: + %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 + %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: + %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 + %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: + ret i64 16 +endif2125: + %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 + %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: + %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 + %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: + %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 + %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: + ret i64 32 +endif2136: + ret i64 64 +} + +define internal i1 @finch.gen.widens(%S.ast.Type %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a2 = alloca %S.ast.Type, align 16 + store %S.ast.Type %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + %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: + %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: + ret i1 false +endif2143: + %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: + %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: + ret i1 false +endif2150: + %t15 = load %S.ast.Type, ptr %a2 + %t16 = call i64 @finch.gen.bitsOf(%S.ast.Type %t15) + %t17 = load %S.ast.Type, ptr %a1 + %t18 = call i64 @finch.gen.bitsOf(%S.ast.Type %t17) + %t19 = icmp sgt i64 %t16, %t18 + ret i1 %t19 +} + +define internal i1 @finch.gen.fits({ ptr, i64, i64 } %p0, %S.ast.Type %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a13 = alloca i64, align 16 + %a31 = alloca i64, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %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: + ret i1 false +endif2153: + %t7 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1280, i64 427) + store i64 %t9, ptr %a10 + %t11 = load %S.ast.Type, ptr %a3 + %t12 = call i64 @finch.gen.bitsOf(%S.ast.Type %t11) + store i64 %t12, ptr %a13 + %t14 = load i64, ptr %a10 + %t15 = icmp slt i64 %t14, 0 + br i1 %t15, label %then2154, label %endif2156 +then2154: + %t16 = load %S.ast.Type, ptr %a3 + %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) + br i1 %t17, label %then2157, label %endif2159 +then2157: + ret i1 false +endif2159: + %t18 = load i64, ptr %a13 + %t19 = icmp eq i64 %t18, 64 + br i1 %t19, label %then2160, label %endif2162 +then2160: + ret i1 true +endif2162: + %t20 = load i64, ptr %a10 + %t21 = load i64, ptr %a13 + %t22 = sub i64 %t21, 1 + %t23 = shl i64 1, %t22 + %t24 = sub i64 0, %t23 + %t25 = icmp sge i64 %t20, %t24 + ret i1 %t25 +endif2156: + %t26 = load i64, ptr %a13 + %t27 = icmp eq i64 %t26, 64 + br i1 %t27, label %then2163, label %endif2165 +then2163: + ret i1 true +endif2165: + %t28 = load i64, ptr %a13 + %t29 = shl i64 1, %t28 + %t30 = sub i64 %t29, 1 + store i64 %t30, ptr %a31 + %t32 = load %S.ast.Type, ptr %a3 + %t33 = call i1 @finch.gen.isSigned(%S.ast.Type %t32) + br i1 %t33, label %then2166, label %endif2168 +then2166: + %t34 = load i64, ptr %a13 + %t35 = sub i64 %t34, 1 + %t36 = shl i64 1, %t35 + %t37 = sub i64 %t36, 1 + store i64 %t37, ptr %a31 + br label %endif2168 +endif2168: + %t38 = load i64, ptr %a10 + %t39 = load i64, ptr %a31 + %t40 = icmp sle i64 %t38, %t39 + ret i1 %t40 +} + +define internal i64 @finch.gen.findStruct(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = 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 = 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) + unreachable +ok2170: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load i64, ptr %t7 + store i64 0, ptr %a9 + br label %for.cond2171 +for.cond2171: + %t10 = load i64, ptr %a9 + %t11 = icmp slt i64 %t10, %t8 + br i1 %t11, label %for.body2172, label %for.end2174 +for.body2172: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic2175, label %ok2176 +panic2175: + call void @finch_panic(ptr @.str.1283, i64 450, ptr @.str.1284) + unreachable +ok2176: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 + %t15 = load i64, ptr %a9 + %t16 = load { ptr, i64, i64 }, ptr %t14 + %t17 = extractvalue { ptr, i64, i64 } %t16, 1 + %t18 = icmp uge i64 %t15, %t17 + br i1 %t18, label %range2177, label %inrange2178 +range2177: + call void @finch_panic_index(ptr @.str.1285, i64 450, i64 %t15, i64 %t17) + unreachable +inrange2178: + %t19 = extractvalue { ptr, i64, i64 } %t16, 0 + %t20 = getelementptr inbounds %S.gen.StructDef, ptr %t19, i64 %t15 + %t21 = getelementptr inbounds %S.gen.StructDef, ptr %t20, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t22, ptr %a24 + 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: + %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) + unreachable +ok2183: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 + %t31 = load i64, ptr %a9 + %t32 = load { ptr, i64, i64 }, ptr %t30 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range2184, label %inrange2185 +range2184: + call void @finch_panic_index(ptr @.str.1288, i64 450, i64 %t31, i64 %t33) + unreachable +inrange2185: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.gen.StructDef, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.gen.StructDef, ptr %t36, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %t37 + %t39 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t38, ptr %a40 + 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: + %t45 = load i64, ptr %a9 + ret i64 %t45 +endif2189: + br label %for.step2173 +for.step2173: + %t46 = load i64, ptr %a9 + %t47 = add i64 %t46, 1 + store i64 %t47, ptr %a9 + br label %for.cond2171 +for.end2174: + ret i64 -1 +} + +define internal i64 @finch.gen.findEnum(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = 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 = 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) + unreachable +ok2191: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load i64, ptr %t7 + store i64 0, ptr %a9 + br label %for.cond2192 +for.cond2192: + %t10 = load i64, ptr %a9 + %t11 = icmp slt i64 %t10, %t8 + br i1 %t11, label %for.body2193, label %for.end2195 +for.body2193: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic2196, label %ok2197 +panic2196: + call void @finch_panic(ptr @.str.1291, i64 459, ptr @.str.1292) + unreachable +ok2197: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20 + %t15 = load i64, ptr %a9 + %t16 = load { ptr, i64, i64 }, ptr %t14 + %t17 = extractvalue { ptr, i64, i64 } %t16, 1 + %t18 = icmp uge i64 %t15, %t17 + br i1 %t18, label %range2198, label %inrange2199 +range2198: + call void @finch_panic_index(ptr @.str.1293, i64 459, i64 %t15, i64 %t17) + unreachable +inrange2199: + %t19 = extractvalue { ptr, i64, i64 } %t16, 0 + %t20 = getelementptr inbounds %S.gen.EnumDef, ptr %t19, i64 %t15 + %t21 = getelementptr inbounds %S.gen.EnumDef, ptr %t20, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t22, ptr %a24 + 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: + %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) + unreachable +ok2204: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20 + %t31 = load i64, ptr %a9 + %t32 = load { ptr, i64, i64 }, ptr %t30 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range2205, label %inrange2206 +range2205: + call void @finch_panic_index(ptr @.str.1296, i64 459, i64 %t31, i64 %t33) + unreachable +inrange2206: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.gen.EnumDef, ptr %t36, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %t37 + %t39 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t38, ptr %a40 + 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: + %t45 = load i64, ptr %a9 + ret i64 %t45 +endif2210: + br label %for.step2194 +for.step2194: + %t46 = load i64, ptr %a9 + %t47 = add i64 %t46, 1 + store i64 %t47, ptr %a9 + br label %for.cond2192 +for.end2195: + ret i64 -1 +} + +define internal i64 @finch.gen.progOf(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 %panic2211, label %ok2212 +panic2211: + call void @finch_panic(ptr @.str.1297, i64 467, ptr @.str.1298) + unreachable +ok2212: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond2213 +for.cond2213: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body2214, label %for.end2216 +for.body2214: + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2217, label %ok2218 +panic2217: + call void @finch_panic(ptr @.str.1299, i64 468, ptr @.str.1300) + unreachable +ok2218: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 0 + %t14 = load i64, ptr %a8 + %t15 = load { ptr, i64, i64 }, ptr %t13 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 %t14, %t16 + br i1 %t17, label %range2219, label %inrange2220 +range2219: + call void @finch_panic_index(ptr @.str.1301, i64 468, i64 %t14, i64 %t16) + unreachable +inrange2220: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds %S.ast.Program, ptr %t18, i64 %t14 + %t20 = getelementptr inbounds %S.ast.Program, ptr %t19, i32 0, i32 0 + %t21 = load { ptr, i64, i64 }, ptr %t20 + %t22 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t21, ptr %a23 + 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: + %t27 = load i64, ptr %a8 + ret i64 %t27 +endif2223: + br label %for.step2215 +for.step2215: + %t28 = load i64, ptr %a8 + %t29 = add i64 %t28, 1 + store i64 %t29, ptr %a8 + br label %for.cond2213 +for.end2216: + ret i64 -1 +} + +define internal i1 @finch.gen.imports(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a23 = alloca i64, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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 %panic2224, label %ok2225 +panic2224: + call void @finch_panic(ptr @.str.1302, i64 476, ptr @.str.1303) + unreachable +ok2225: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 + %t6 = load ptr, ptr %a1 + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic2226, label %ok2227 +panic2226: + call void @finch_panic(ptr @.str.1304, i64 476, ptr @.str.1305) + unreachable +ok2227: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13 + %t10 = load { ptr, i64, i64 }, ptr %t9 + %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) + %t12 = load { ptr, i64, i64 }, ptr %t5 + %t13 = extractvalue { ptr, i64, i64 } %t12, 1 + %t14 = icmp uge i64 %t11, %t13 + br i1 %t14, label %range2228, label %inrange2229 +range2228: + call void @finch_panic_index(ptr @.str.1306, i64 476, i64 %t11, i64 %t13) + unreachable +inrange2229: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.ast.Program, ptr %t15, i64 %t11 + %t17 = getelementptr inbounds %S.ast.Program, ptr %t16, i32 0, i32 2 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a20 + %t21 = load i64, ptr %t18 + %t22 = load ptr, ptr %t17 + store i64 0, ptr %a23 + br label %find.cond2230 +find.cond2230: + %t24 = load i64, ptr %a23 + %t25 = icmp slt i64 %t24, %t21 + br i1 %t25, label %find.body2231, label %find.end2234 +find.body2231: + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t24 + %t27 = load { ptr, i64, i64 }, ptr %t26 + store { ptr, i64, i64 } %t27, ptr %a28 + store { ptr, i64, i64 } %t19, ptr %a29 + %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) + %t31 = icmp ne i32 %t30, 0 + br i1 %t31, label %find.hit2232, label %find.next2233 +find.hit2232: + store i64 %t24, ptr %a20 + br label %find.end2234 +find.next2233: + %t32 = add i64 %t24, 1 + store i64 %t32, ptr %a23 + br label %find.cond2230 +find.end2234: + %t33 = load i64, ptr %a20 + %t34 = icmp sge i64 %t33, 0 + ret i1 %t34 +} + +define internal %S.ast.Type @finch.gen.resolve(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %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 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca %S.ast.Type, align 16 + %a43 = 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 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 + %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 + %a276 = 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 + %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 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = 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 + %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 + %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 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = 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 + 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 + %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) + %t9 = icmp ne i32 %t8, 0 + br i1 %t9, label %then2235, label %endif2237 +then2235: + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t12 = load { ptr, i64, i64 }, ptr %t11 + %t13 = extractvalue { ptr, i64, i64 } %t12, 1 + %t14 = icmp uge i64 0, %t13 + br i1 %t14, label %range2238, label %inrange2239 +range2238: + call void @finch_panic_index(ptr @.str.1308, i64 481, i64 0, i64 %t13) + unreachable +inrange2239: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 + %t17 = load %S.ast.Type, ptr %t16 + %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) + 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) + 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) + 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) + 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) + 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 + %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 +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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.mangle({ 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 + %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 + 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 + 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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = icmp eq i64 %t3, 0 + br i1 %t4, label %then2356, label %endif2358 +then2356: + ret { ptr, i64, i64 } { ptr @.str.1367, i64 4, i64 0 } +endif2358: + %t5 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t5, ptr %a6 + call void @finch_str_copy(ptr %a7, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t8 +} + +define internal { ptr, i64, i64 } @finch.gen.llty(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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { 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 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a46 = 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 + %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 + %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 + %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 + %a91 = 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 + %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 + %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 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = 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 + %t4 = load { ptr, i64, i64 }, ptr %t3 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1368, i64 4, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br i1 %t13, label %then2359, label %endif2361 +then2359: + ret { ptr, i64, i64 } { ptr @.str.1369, i64 2, i64 0 } +endif2361: + %t14 = load %S.ast.Type, ptr %a2 + %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) + br label %logic.from2362 +logic.from2362: + br i1 %t15, label %logic.end2364, label %logic.rhs2363 +logic.rhs2363: + %t16 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t16, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1370, i64 4, i64 0 }, ptr %a18 + %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) + %t20 = icmp ne i32 %t19, 0 + br label %logic.rend2365 +logic.rend2365: + br label %logic.end2364 +logic.end2364: + %t21 = phi i1 [ true, %logic.from2362 ], [ %t20, %logic.rend2365 ] + br i1 %t21, label %then2366, label %endif2368 +then2366: + %t22 = load %S.ast.Type, ptr %a2 + %t23 = call i64 @finch.gen.bitsOf(%S.ast.Type %t22) + call void @finch_str_from_int(ptr %a24, i64 %t23) + %t25 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } %t25, ptr %a28 + call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) + %t29 = load { ptr, i64, i64 }, ptr %a26 + ret { ptr, i64, i64 } %t29 +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) + 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: + %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 + %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 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a125 + ret { ptr, i64, i64 } %t128 +} + +define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.FnSig, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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: + %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 + %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 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp eq i32 %t16, 0 + br i1 %t17, label %then2406, label %endif2408 +then2406: + %t18 = load ptr, ptr %a1 + %t19 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 + %t20 = load %S.ast.Type, ptr %t19 + %t21 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t18, %S.ast.Type %t20) + store { ptr, i64, i64 } %t21, ptr %a10 + br label %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 +} + +define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { +entry: + %a1 = alloca %S.ast.Node, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %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 + 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 + 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 + %t9 = load i64, ptr %t8 + call void @finch_str_from_int(ptr %a10, i64 %t9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = 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 + %a18 = 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 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = 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 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + 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: + %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 + %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: + %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 + %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: + %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 + %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: + %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: + %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 + %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: + %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 + %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 } +} + +define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, 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 + 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 } %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 +} + +define internal i1 @finch.gen.owning(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 + %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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = 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 + %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 + %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: + %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 + %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: + %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 + %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: + ret i1 true +endif2443: + %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1417, i64 6, i64 0 }, ptr %a26 + %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) + %t28 = icmp ne i32 %t27, 0 + br i1 %t28, label %then2444, label %endif2446 +then2444: + %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) + unreachable +ok2448: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 + %t32 = load ptr, ptr %a1 + %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t34 = load { ptr, i64, i64 }, ptr %t33 + %t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t36 = load { ptr, i64, i64 }, ptr %t35 + %t37 = call i64 @finch.gen.findStruct(ptr %t32, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t36) + %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) + unreachable +inrange2450: + %t41 = extractvalue { ptr, i64, i64 } %t38, 0 + %t42 = getelementptr inbounds %S.gen.StructDef, ptr %t41, i64 %t37 + %t43 = getelementptr inbounds %S.gen.StructDef, ptr %t42, i32 0, i32 16 + %t44 = load i1, ptr %t43 + ret i1 %t44 +endif2446: + ret i1 false +} + +define internal { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + 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 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br i1 %t7, label %then2451, label %endif2453 +then2451: + %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 + %t9 = load { ptr, i64, i64 }, ptr %t8 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 0, %t10 + br i1 %t11, label %range2454, label %inrange2455 +range2454: + call void @finch_panic_index(ptr @.str.1423, i64 651, i64 0, i64 %t10) + unreachable +inrange2455: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0 + %t14 = load %S.ast.Type, ptr %t13 + %t15 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t14) + store { ptr, i64, i64 } { ptr @.str.1422, i64 4, i64 0 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t19 +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) + 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) + 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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a11 = 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 + store i64 %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.1435, i64 16, i64 0 }, ptr %a2 + %t3 = load i64, ptr %a1 + %t4 = sdiv i64 %t3, 16 + %t5 = load { ptr, i64, i64 }, ptr %a2 + %t6 = extractvalue { ptr, i64, i64 } %t5, 1 + %t7 = icmp uge i64 %t4, %t6 + br i1 %t7, label %range2469, label %inrange2470 +range2469: + call void @finch_panic_index(ptr @.str.1436, i64 669, i64 %t4, i64 %t6) + unreachable +inrange2470: + %t8 = extractvalue { ptr, i64, i64 } %t5, 0 + %t9 = getelementptr inbounds i8, ptr %t8, i64 %t4 + %t10 = load i8, ptr %t9 + call void @finch_str_from_char(ptr %a11, i8 signext %t10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + %t13 = load i64, ptr %a1 + %t14 = srem i64 %t13, 16 + %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) + unreachable +inrange2472: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds i8, ptr %t18, i64 %t14 + %t20 = load i8, ptr %t19 + call void @finch_str_from_char(ptr %a21, i8 signext %t20) + %t22 = load { ptr, i64, i64 }, ptr %a21 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %a18 = 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 + %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 + %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 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = 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) + unreachable +ok2474: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 8 + %t6 = load i64, ptr %t5 + %t7 = add i64 %t6, 1 + store i64 %t7, ptr %t5 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic2475, label %ok2476 +panic2475: + call void @finch_panic(ptr @.str.1441, i64 674, ptr @.str.1442) + unreachable +ok2476: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 8 + %t11 = load i64, ptr %t10 + call void @finch_str_from_int(ptr %a12, i64 %t11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1440, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a18 + store { ptr, i64, i64 } zeroinitializer, ptr %a19 + store i64 0, ptr %a20 + br label %each.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) + 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 +} + +define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %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 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = 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 { 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 } %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 + 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 +} + +define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Node, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %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 + %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 + %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 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 }) + 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 }) + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = load { ptr, i64, i64 }, ptr %a2 + %t13 = load { ptr, i64, i64 }, ptr %a7 + %t14 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.condBr(ptr %t11, { ptr, i64, i64 } %t12, { ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14) + %t15 = load ptr, ptr %a1 + %t16 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.gen.label(ptr %t15, { ptr, i64, i64 } %t16) + %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) + unreachable +ok2502: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 1 + %t21 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 + %t22 = load i64, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %t20 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 %t22, %t24 + br i1 %t25, label %range2503, label %inrange2504 +range2503: + call void @finch_panic_index(ptr @.str.1458, i64 703, i64 %t22, i64 %t24) + unreachable +inrange2504: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t17, { ptr, i64, i64 } %t28) + store { ptr, i64, i64 } %t29, ptr %a30 + %t31 = load ptr, ptr %a1 + %t32 = load { ptr, i64, i64 }, ptr %a3 + %t33 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } %t32) + 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 } %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 + 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 + 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) + 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) + ret void +} + +define internal void @finch.gen.boundsCheck(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Node, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a22 = 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 + %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 + %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 + %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 + %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 + 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 }) + 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 }) + 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 } %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 + 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 } %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 + %t33 = load { ptr, i64, i64 }, ptr %a7 + call void @finch.gen.label(ptr %t32, { ptr, i64, i64 } %t33) + %t34 = load ptr, ptr %a1 + %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) + 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) + 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 + 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) + 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) + ret void +} + +define internal %S.gen.Saved @finch.gen.beginHelper(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca %S.gen.Saved, 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 + %a59 = alloca %S.gen.Saved, align 16 + %a60 = alloca %S.gen.Saved, 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) + unreachable +ok2514: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 4 + %t5 = load { ptr, i64, i64 }, ptr %t4 + store { ptr, i64, i64 } %t5, ptr %a6 + call void @finch.copy.arr_str(ptr %a7, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + %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) + unreachable +ok2516: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 5 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + call void @finch.copy.arr_str(ptr %a15, ptr %a14) + %t16 = load { ptr, i64, i64 }, ptr %a15 + %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) + unreachable +ok2518: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 6 + %t21 = load i64, ptr %t20 + %t22 = insertvalue %S.gen.Saved %t17, i64 %t21, 2 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic2519, label %ok2520 +panic2519: + call void @finch_panic(ptr @.str.1487, i64 735, ptr @.str.1488) + unreachable +ok2520: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 9 + %t26 = load i1, ptr %t25 + %t27 = insertvalue %S.gen.Saved %t22, i1 %t26, 3 + %t28 = load ptr, ptr %a1 + %t29 = icmp eq ptr %t28, null + br i1 %t29, label %panic2521, label %ok2522 +panic2521: + call void @finch_panic(ptr @.str.1489, i64 735, ptr @.str.1490) + unreachable +ok2522: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 + %t31 = load i64, ptr %t30 + %t32 = insertvalue %S.gen.Saved %t27, i64 %t31, 4 + store %S.gen.Saved %t32, ptr %a33 + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic2523, label %ok2524 +panic2523: + call void @finch_panic(ptr @.str.1491, i64 736, ptr @.str.1492) + unreachable +ok2524: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 34 + store i64 -1, ptr %t36 + store { ptr, i64, i64 } zeroinitializer, ptr %a37 + %t38 = load { ptr, i64, i64 }, ptr %a37 + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic2525, label %ok2526 +panic2525: + call void @finch_panic(ptr @.str.1493, i64 738, ptr @.str.1494) + unreachable +ok2526: + %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 + store { ptr, i64, i64 } %t38, ptr %a42 + call void @finch.copy.arr_str(ptr %a43, ptr %a42) + %t44 = load { ptr, i64, i64 }, ptr %a43 + 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) + 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) + 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) + 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 +} + +define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Saved, align 16 + %a3 = 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 + %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 + %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 + %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 + %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 + 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) + unreachable +ok2534: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 3 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t8, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1503, i64 10, i64 0 }, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic2535, label %ok2536 +panic2535: + call void @finch_panic(ptr @.str.1504, i64 746, ptr @.str.1505) + unreachable +ok2536: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 5 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1506, i64 1, i64 0 }, ptr %a17 + call void @finch_str_join(ptr %a18, ptr %t15, ptr %a17) + %t19 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t12, ptr %a21 + 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) + 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) + 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 + %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) + 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 + %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) + unreachable +ok2548: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 34 + store i64 %t74, ptr %t77 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.loopStart(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 + %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 + %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 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = 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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 }) + 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) + %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 }) + 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 }) + 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 }) + store { ptr, i64, i64 } %t15, ptr %a16 + %t17 = load ptr, ptr %a1 + %t18 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.br(ptr %t17, { ptr, i64, i64 } %t18) + %t19 = load ptr, ptr %a1 + %t20 = load { ptr, i64, i64 }, ptr %a10 + 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) + 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 } %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 + 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 } %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 + %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 +} + +define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = 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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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) + unreachable +inrange2550: + %t7 = extractvalue { ptr, i64, i64 } %t4, 0 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 0 + %t9 = load { ptr, i64, i64 }, ptr %t8 + %t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1531, i64 3, i64 0 }, { ptr, i64, i64 } %t9) + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load ptr, ptr %a1 + %t13 = load ptr, ptr %a1 + %t14 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1534, i64 8, i64 0 }, ptr %a16 + store { ptr, i64, i64 } %t14, ptr %a17 + call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1535, i64 3, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a19 + %t23 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t22) + %t24 = load { ptr, i64, i64 }, ptr %a2 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 0, %t25 + br i1 %t26, label %range2551, label %inrange2552 +range2551: + call void @finch_panic_index(ptr @.str.1536, i64 772, i64 0, i64 %t25) + 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) + 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) + 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) + ret void +} + +define internal void @finch.gen.copyAt(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %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 + %a32 = 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 + %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 + %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 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = 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 + %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 + %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) + %t10 = icmp ne i32 %t9, 0 + br i1 %t10, label %then2557, label %else2558 +then2557: + %t11 = load ptr, ptr %a1 + %t12 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1540, i64 30, i64 0 }, ptr %a14 + store { ptr, i64, i64 } %t12, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1541, i64 6, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a17 + %t21 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t20, ptr %a23 + store { ptr, i64, i64 } %t21, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.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 + 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 + 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: + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.copyFn(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 + %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 + %a49 = alloca %S.ast.Type, align 16 + %a51 = alloca %S.ast.Type, 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 + %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 + %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 + %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 + %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 + %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 + %a143 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a147 = 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 + %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 + %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 + %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 + %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 + %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 + %a427 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = 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 + 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 } %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) + 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) + 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) + 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 + %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 + 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) + 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 + 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 + store { ptr, i64, i64 } %t131, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1571, i64 6, i64 0 }, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a132 + %t136 = load { ptr, i64, i64 }, ptr %a81 + %t137 = extractvalue { ptr, i64, i64 } %t136, 1 + %t138 = icmp uge i64 3, %t137 + br i1 %t138, label %range2592, label %inrange2593 +range2592: + call void @finch_panic_index(ptr @.str.1572, i64 803, i64 3, i64 %t137) + 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) + 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) + 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) + 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) + 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) + %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) + %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) + 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) + 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) + 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) + 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 + %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) + 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) + 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 }) + %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 +} + +define internal { ptr, i64, i64 } @finch.gen.copyValue(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 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca %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 + 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 %then2635, label %endif2637 +then2635: + %t8 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t8, ptr %a9 + call void @finch_str_copy(ptr %a10, ptr %a9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t11 +endif2637: + %t12 = load ptr, ptr %a1 + %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 + %t17 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t16, 0 + %t18 = load %S.ast.Type, ptr %a3 + 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 = 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 + %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) + %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 +} + +define internal { ptr, i64, i64 } @finch.gen.own(ptr %p0, %S.gen.Val %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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: + %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: + %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: + %t16 = load ptr, ptr %a1 + %t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t18 = load { ptr, i64, i64 }, ptr %t17 + %t19 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t20 = load %S.ast.Type, ptr %t19 + %t21 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t16, { ptr, i64, i64 } %t18, %S.ast.Type %t20) + ret { ptr, i64, i64 } %t21 +} + +define internal void @finch.gen.printf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = 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 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + 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 + %t6 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t4, { ptr, i64, i64 } %t5) + store { ptr, i64, i64 } %t6, ptr %a7 + %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 + %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: + %t15 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1612, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t19, ptr %a11 + br label %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) + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.cstr(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, 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 + %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 + %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 + %a26 = 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 + %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 + %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 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = 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 } %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 + 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 + 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 +} + +define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca i1, align 16 + %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 + %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 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = 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 + %a69 = 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 + %a87 = 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 + %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 + %a110 = 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 + %a118 = 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 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = 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 + %a233 = 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 + %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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store i1 %p3, ptr %a4 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %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 + 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: + %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 }) + %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 + %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 + 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 + 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 + 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 } %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 %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: + %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 + %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) + %t252 = load ptr, ptr %a1 + %t253 = load { ptr, i64, i64 }, ptr %a249 + %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 + 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: + ret void +} + +define internal void @finch.gen.bufText(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = 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 + %a17 = 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 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 + 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 } %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 + 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 + 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) + ret void +} + +define internal void @finch.gen.emitFormat(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, i1 %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca i1, align 16 + %a8 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = 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 + %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 + %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 + %a145 = 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 + %a153 = 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 + %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 + %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 + %a178 = alloca %S.ast.Type, align 16 + %a179 = 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 { 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = 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 + %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 + %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 + %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 + %a239 = 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 + %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 + %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 + 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 i1 %p4, ptr %a5 + %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 + 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 + %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 + 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 } %t71, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.1693, i64 9, i64 0 }, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a72 + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a3 + %t78 = load %S.ast.Type, ptr %a4 + %t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.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 + 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 + 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 } %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: + ret void +} + +define internal void @finch.copy.S_gen_EnumDef(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.EnumDef, ptr %src + store %S.gen.EnumDef %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_str(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.EnumDef, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.EnumDef, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_int(ptr %t8, ptr %t9) + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.formatFn(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 + %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 + %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 + %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a87 = 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 + %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 + %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 + %a145 = 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 + %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 + %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 + %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 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %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 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a326 = alloca { ptr, i64, i64 }, align 16 + %a331 = 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 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a370 = 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 + %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 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca { ptr, i64, i64 }, align 16 + %a549 = 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 + 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 } %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) + 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) + 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) + 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 + %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) + 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 }) + %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 + %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) + 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) + %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: + %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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + %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) + 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) + %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) + 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) + %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 + %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) + %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) + 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) + 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) + 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 + %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) + unreachable +inrange2772: + %t513 = extractvalue { ptr, i64, i64 } %t510, 0 + %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509 + %t515 = load { ptr, i64, i64 }, ptr %t514 + 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) + unreachable +inrange2774: + %t539 = extractvalue { ptr, i64, i64 } %t536, 0 + %t540 = getelementptr inbounds i64, ptr %t539, i64 %t535 + %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 { ptr, i64, i64 } %t548, ptr %a549 + %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) + 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) + 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) + %t590 = load { ptr, i64, i64 }, ptr %a589 + ret { ptr, i64, i64 } %t590 +} + +define internal { ptr, i64, i64 } @finch.gen.intCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a7 = alloca i64, align 16 + %a10 = alloca i64, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 + %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 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = 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 { 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 + %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 + %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 + %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 + %a105 = 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 + 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 i64 @finch.gen.bitsOf(%S.ast.Type %t5) + store i64 %t6, ptr %a7 + %t8 = load %S.ast.Type, ptr %a4 + %t9 = call i64 @finch.gen.bitsOf(%S.ast.Type %t8) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a7 + %t12 = load i64, ptr %a10 + %t13 = icmp eq i64 %t11, %t12 + br i1 %t13, label %then2779, label %endif2781 +then2779: + %t14 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_copy(ptr %a16, ptr %a15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t17 +endif2781: + %t18 = load i64, ptr %a10 + %t19 = load i64, ptr %a7 + %t20 = icmp slt i64 %t18, %t19 + br i1 %t20, label %then2782, label %endif2784 +then2782: + %t21 = load ptr, ptr %a1 + %t22 = load ptr, ptr %a1 + %t23 = load %S.ast.Type, ptr %a3 + %t24 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t23) + store { ptr, i64, i64 } { ptr @.str.1833, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store %S.ast.Type %p3, ptr %a4 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t6 = load { ptr, i64, i64 }, ptr %t5 + %t7 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 + %t8 = load { ptr, i64, i64 }, ptr %t7 + store { ptr, i64, i64 } %t6, ptr %a9 + 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: + %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: + %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: + %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 } %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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Type, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + 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: + %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 } %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 } %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 +} + +define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Val, ptr %src + store %S.gen.Val %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Val, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Val, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Val, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Val, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + ret void +} + +define internal %S.gen.Val @finch.gen.coerce(ptr %p0, %S.gen.Val %p1, %S.ast.Type %p2, %S.ast.Node %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.Val, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca %S.gen.Val, align 16 + %a12 = alloca %S.gen.Val, 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 + %a30 = alloca %S.ast.Type, align 16 + %a31 = alloca %S.ast.Type, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca %S.ast.Type, align 16 + %a67 = alloca %S.ast.Type, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca %S.ast.Type, align 16 + %a93 = alloca %S.ast.Type, align 16 + %a110 = alloca %S.ast.Type, align 16 + %a111 = alloca %S.ast.Type, 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 + %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 + %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 + %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 + %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 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = 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 + %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 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a305 = 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 + store ptr %p0, ptr %a1 + store %S.gen.Val %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store %S.ast.Node %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + %t6 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %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: + %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: + %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 + %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: + %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 + %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 + %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: + %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 + %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: + %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 + %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: + %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: + %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: + %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 + call void @finch_str_copy(ptr %a62, ptr %a61) + %t63 = load { ptr, i64, i64 }, ptr %a62 + %t64 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t63, 0 + %t65 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t65, ptr %a66 + call void @finch.copy.S_ast_Type(ptr %a67, ptr %a66) + %t68 = load %S.ast.Type, ptr %a67 + %t69 = insertvalue %S.gen.Val %t64, %S.ast.Type %t68, 1 + ret %S.gen.Val %t69 +endif2821: + %t70 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t71 = load %S.ast.Type, ptr %t70 + %t72 = call i1 @finch.gen.isInt(%S.ast.Type %t71) + br label %logic.from2822 +logic.from2822: + br i1 %t72, label %logic.rhs2823, label %logic.end2824 +logic.rhs2823: + %t73 = load %S.ast.Type, ptr %a3 + %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) + br label %logic.rend2825 +logic.rend2825: + br label %logic.end2824 +logic.end2824: + %t75 = phi i1 [ false, %logic.from2822 ], [ %t74, %logic.rend2825 ] + br i1 %t75, label %then2826, label %endif2828 +then2826: + %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 + %t77 = load i1, ptr %t76 + br label %logic.from2829 +logic.from2829: + br i1 %t77, label %logic.rhs2830, label %logic.end2831 +logic.rhs2830: + %t78 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t79 = load { ptr, i64, i64 }, ptr %t78 + %t80 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t81 = load %S.ast.Type, ptr %t80 + %t82 = load %S.ast.Type, ptr %a3 + %t83 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t79, %S.ast.Type %t81, %S.ast.Type %t82) + br label %logic.rend2832 +logic.rend2832: + br label %logic.end2831 +logic.end2831: + %t84 = phi i1 [ false, %logic.from2829 ], [ %t83, %logic.rend2832 ] + br i1 %t84, label %then2833, label %endif2835 +then2833: + %t85 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t86 = load { ptr, i64, i64 }, ptr %t85 + store { ptr, i64, i64 } %t86, ptr %a87 + call void @finch_str_copy(ptr %a88, ptr %a87) + %t89 = load { ptr, i64, i64 }, ptr %a88 + %t90 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t89, 0 + %t91 = load %S.ast.Type, ptr %a3 + 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 %t90, %S.ast.Type %t94, 1 + %t96 = insertvalue %S.gen.Val %t95, i1 true, 3 + ret %S.gen.Val %t96 +endif2835: + %t97 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t98 = load %S.ast.Type, ptr %t97 + %t99 = load %S.ast.Type, ptr %a3 + %t100 = call i1 @finch.gen.widens(%S.ast.Type %t98, %S.ast.Type %t99) + br i1 %t100, label %then2836, label %endif2838 +then2836: + %t101 = load ptr, ptr %a1 + %t102 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + %t104 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 + %t105 = load %S.ast.Type, ptr %t104 + %t106 = load %S.ast.Type, ptr %a3 + %t107 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t101, { ptr, i64, i64 } %t103, %S.ast.Type %t105, %S.ast.Type %t106) + %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 +endif2838: + %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: + %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 } %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 + 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 + 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 } %t282, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.1871, i64 26, i64 0 }, ptr %a285 + call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) + %t286 = load { ptr, i64, i64 }, ptr %a283 + store { ptr, i64, i64 } %t286, ptr %a254 + br label %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 + %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 + %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 +} + +define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a19 = alloca i64, align 16 + %a32 = alloca i64, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 %panic2903, label %ok2904 +panic2903: + call void @finch_panic(ptr @.str.1877, i64 1148, ptr @.str.1878) + unreachable +ok2904: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond2905 +for.cond2905: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body2906, label %for.end2908 +for.body2906: + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic2909, label %ok2910 +panic2909: + call void @finch_panic(ptr @.str.1879, i64 1149, ptr @.str.1880) + unreachable +ok2910: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 10 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = sub i64 %t15, 1 + %t17 = load i64, ptr %a8 + %t18 = sub i64 %t16, %t17 + 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) + unreachable +ok2912: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 + %t23 = load i64, ptr %a19 + %t24 = load { ptr, i64, i64 }, ptr %t22 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 %t23, %t25 + br i1 %t26, label %range2913, label %inrange2914 +range2913: + call void @finch_panic_index(ptr @.str.1883, i64 1150, i64 %t23, i64 %t25) + unreachable +inrange2914: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 + %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 0 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t31 = load i64, ptr %t30 + store i64 0, ptr %a32 + br label %for.cond2915 +for.cond2915: + %t33 = load i64, ptr %a32 + %t34 = icmp slt i64 %t33, %t31 + br i1 %t34, label %for.body2916, label %for.end2918 +for.body2916: + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic2919, label %ok2920 +panic2919: + call void @finch_panic(ptr @.str.1884, i64 1151, ptr @.str.1885) + unreachable +ok2920: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 10 + %t38 = load i64, ptr %a19 + %t39 = load { ptr, i64, i64 }, ptr %t37 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range2921, label %inrange2922 +range2921: + call void @finch_panic_index(ptr @.str.1886, i64 1151, i64 %t38, i64 %t40) + unreachable +inrange2922: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.gen.Scope, ptr %t42, i64 %t38 + %t44 = getelementptr inbounds %S.gen.Scope, ptr %t43, i32 0, i32 0 + %t45 = load i64, ptr %a32 + %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) + unreachable +inrange2924: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.gen.Var, ptr %t49, i64 %t45 + %t51 = getelementptr inbounds %S.gen.Var, ptr %t50, i32 0, i32 0 + %t52 = load { ptr, i64, i64 }, ptr %t51 + %t53 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t52, ptr %a54 + 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: + %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) + unreachable +ok2929: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 42 + %t61 = load i1, ptr %t60 + br label %logic.from2930 +logic.from2930: + br i1 %t61, label %logic.rhs2931, label %logic.end2932 +logic.rhs2931: + %t62 = load ptr, ptr %a1 + %t63 = icmp eq ptr %t62, null + br i1 %t63, label %panic2933, label %ok2934 +panic2933: + call void @finch_panic(ptr @.str.1890, i64 1152, ptr @.str.1891) + unreachable +ok2934: + %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 10 + %t65 = load i64, ptr %a19 + %t66 = load { ptr, i64, i64 }, ptr %t64 + %t67 = extractvalue { ptr, i64, i64 } %t66, 1 + %t68 = icmp uge i64 %t65, %t67 + br i1 %t68, label %range2935, label %inrange2936 +range2935: + call void @finch_panic_index(ptr @.str.1892, i64 1152, i64 %t65, i64 %t67) + unreachable +inrange2936: + %t69 = extractvalue { ptr, i64, i64 } %t66, 0 + %t70 = getelementptr inbounds %S.gen.Scope, ptr %t69, i64 %t65 + %t71 = getelementptr inbounds %S.gen.Scope, ptr %t70, i32 0, i32 0 + %t72 = load i64, ptr %a32 + %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) + unreachable +inrange2938: + %t76 = extractvalue { ptr, i64, i64 } %t73, 0 + %t77 = getelementptr inbounds %S.gen.Var, ptr %t76, i64 %t72 + %t78 = getelementptr inbounds %S.gen.Var, ptr %t77, i32 0, i32 4 + %t79 = load i64, ptr %t78 + %t80 = load ptr, ptr %a1 + %t81 = icmp eq ptr %t80, null + br i1 %t81, label %panic2939, label %ok2940 +panic2939: + call void @finch_panic(ptr @.str.1894, i64 1152, ptr @.str.1895) + unreachable +ok2940: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 43 + %t83 = load i64, ptr %t82 + %t84 = icmp sge i64 %t79, %t83 + br label %logic.rend2941 +logic.rend2941: + br label %logic.end2932 +logic.end2932: + %t85 = phi i1 [ false, %logic.from2930 ], [ %t84, %logic.rend2941 ] + br i1 %t85, label %then2942, label %endif2944 +then2942: + br label %for.step2917 +endif2944: + %t86 = load i64, ptr %a19 + %t87 = mul i64 %t86, 100000 + %t88 = load i64, ptr %a32 + %t89 = add i64 %t87, %t88 + ret i64 %t89 +endif2927: + br label %for.step2917 +for.step2917: + %t90 = load i64, ptr %a32 + %t91 = add i64 %t90, 1 + store i64 %t91, ptr %a32 + br label %for.cond2915 +for.end2918: + br label %for.step2907 +for.step2907: + %t92 = load i64, ptr %a8 + %t93 = add i64 %t92, 1 + store i64 %t93, ptr %a8 + br label %for.cond2905 +for.end2908: + ret i64 -1 +} + +define internal void @finch.copy.S_gen_Var(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Var, ptr %src + store %S.gen.Var %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t8, ptr %t9) + ret void +} + +define internal %S.gen.Var @finch.gen.varAt(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a22 = alloca %S.gen.Var, align 16 + %a23 = alloca %S.gen.Var, 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 %panic2945, label %ok2946 +panic2945: + call void @finch_panic(ptr @.str.1896, i64 1163, ptr @.str.1897) + unreachable +ok2946: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 + %t6 = load i64, ptr %a2 + %t7 = sdiv i64 %t6, 100000 + %t8 = load { ptr, i64, i64 }, ptr %t5 + %t9 = extractvalue { ptr, i64, i64 } %t8, 1 + %t10 = icmp uge i64 %t7, %t9 + br i1 %t10, label %range2947, label %inrange2948 +range2947: + call void @finch_panic_index(ptr @.str.1898, i64 1163, i64 %t7, i64 %t9) + unreachable +inrange2948: + %t11 = extractvalue { ptr, i64, i64 } %t8, 0 + %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i64 %t7 + %t13 = getelementptr inbounds %S.gen.Scope, ptr %t12, i32 0, i32 0 + %t14 = load i64, ptr %a2 + %t15 = srem i64 %t14, 100000 + %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) + unreachable +inrange2950: + %t19 = extractvalue { ptr, i64, i64 } %t16, 0 + %t20 = getelementptr inbounds %S.gen.Var, ptr %t19, i64 %t15 + %t21 = load %S.gen.Var, ptr %t20 + store %S.gen.Var %t21, ptr %a22 + call void @finch.copy.S_gen_Var(ptr %a23, ptr %a22) + %t24 = load %S.gen.Var, ptr %a23 + ret %S.gen.Var %t24 +} + +define internal i64 @finch.gen.findFn(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = 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 = 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) + unreachable +ok2952: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load i64, ptr %t7 + store i64 0, ptr %a9 + br label %for.cond2953 +for.cond2953: + %t10 = load i64, ptr %a9 + %t11 = icmp slt i64 %t10, %t8 + br i1 %t11, label %for.body2954, label %for.end2956 +for.body2954: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic2957, label %ok2958 +panic2957: + call void @finch_panic(ptr @.str.1902, i64 1168, ptr @.str.1903) + unreachable +ok2958: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14 + %t15 = load i64, ptr %a9 + %t16 = load { ptr, i64, i64 }, ptr %t14 + %t17 = extractvalue { ptr, i64, i64 } %t16, 1 + %t18 = icmp uge i64 %t15, %t17 + br i1 %t18, label %range2959, label %inrange2960 +range2959: + call void @finch_panic_index(ptr @.str.1904, i64 1168, i64 %t15, i64 %t17) + unreachable +inrange2960: + %t19 = extractvalue { ptr, i64, i64 } %t16, 0 + %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i64 %t15 + %t21 = getelementptr inbounds %S.gen.FnSig, ptr %t20, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t22, ptr %a24 + 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: + %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) + unreachable +ok2965: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14 + %t31 = load i64, ptr %a9 + %t32 = load { ptr, i64, i64 }, ptr %t30 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range2966, label %inrange2967 +range2966: + call void @finch_panic_index(ptr @.str.1907, i64 1168, i64 %t31, i64 %t33) + unreachable +inrange2967: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 1 + %t38 = load { ptr, i64, i64 }, ptr %t37 + %t39 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t38, ptr %a40 + 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: + %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) + unreachable +ok2973: + %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14 + %t48 = load i64, ptr %a9 + %t49 = load { ptr, i64, i64 }, ptr %t47 + %t50 = extractvalue { ptr, i64, i64 } %t49, 1 + %t51 = icmp uge i64 %t48, %t50 + br i1 %t51, label %range2974, label %inrange2975 +range2974: + call void @finch_panic_index(ptr @.str.1910, i64 1168, i64 %t48, i64 %t50) + unreachable +inrange2975: + %t52 = extractvalue { ptr, i64, i64 } %t49, 0 + %t53 = getelementptr inbounds %S.gen.FnSig, ptr %t52, i64 %t48 + %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 2 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = icmp eq i64 %t56, 0 + br label %logic.rend2976 +logic.rend2976: + br label %logic.end2971 +logic.end2971: + %t58 = phi i1 [ false, %logic.from2969 ], [ %t57, %logic.rend2976 ] + br i1 %t58, label %then2977, label %endif2979 +then2977: + %t59 = load i64, ptr %a9 + ret i64 %t59 +endif2979: + br label %for.step2955 +for.step2955: + %t60 = load i64, ptr %a9 + %t61 = add i64 %t60, 1 + store i64 %t61, ptr %a9 + br label %for.cond2953 +for.end2956: + ret i64 -1 +} + +define internal i64 @finch.gen.findMethod(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = 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 = 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) + unreachable +ok2981: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 + %t9 = load i64, ptr %t8 + store i64 0, ptr %a10 + br label %for.cond2982 +for.cond2982: + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, %t9 + br i1 %t12, label %for.body2983, label %for.end2985 +for.body2983: + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic2986, label %ok2987 +panic2986: + call void @finch_panic(ptr @.str.1913, i64 1177, ptr @.str.1914) + unreachable +ok2987: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14 + %t16 = load i64, ptr %a10 + %t17 = load { ptr, i64, i64 }, ptr %t15 + %t18 = extractvalue { ptr, i64, i64 } %t17, 1 + %t19 = icmp uge i64 %t16, %t18 + br i1 %t19, label %range2988, label %inrange2989 +range2988: + call void @finch_panic_index(ptr @.str.1915, i64 1177, i64 %t16, i64 %t18) + unreachable +inrange2989: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.gen.FnSig, ptr %t20, i64 %t16 + %t22 = getelementptr inbounds %S.gen.FnSig, ptr %t21, i32 0, i32 3 + %t23 = load { ptr, i64, i64 }, ptr %t22 + %t24 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t23, ptr %a25 + 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: + %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) + unreachable +ok2994: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14 + %t32 = load i64, ptr %a10 + %t33 = load { ptr, i64, i64 }, ptr %t31 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 %t32, %t34 + br i1 %t35, label %range2995, label %inrange2996 +range2995: + call void @finch_panic_index(ptr @.str.1918, i64 1177, i64 %t32, i64 %t34) + unreachable +inrange2996: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i64 %t32 + %t38 = getelementptr inbounds %S.gen.FnSig, ptr %t37, i32 0, i32 2 + %t39 = load { ptr, i64, i64 }, ptr %t38 + %t40 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t39, ptr %a41 + 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: + %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) + unreachable +ok3002: + %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14 + %t49 = load i64, ptr %a10 + %t50 = load { ptr, i64, i64 }, ptr %t48 + %t51 = extractvalue { ptr, i64, i64 } %t50, 1 + %t52 = icmp uge i64 %t49, %t51 + br i1 %t52, label %range3003, label %inrange3004 +range3003: + call void @finch_panic_index(ptr @.str.1921, i64 1177, i64 %t49, i64 %t51) + unreachable +inrange3004: + %t53 = extractvalue { ptr, i64, i64 } %t50, 0 + %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i64 %t49 + %t55 = getelementptr inbounds %S.gen.FnSig, ptr %t54, i32 0, i32 1 + %t56 = load { ptr, i64, i64 }, ptr %t55 + %t57 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t56, ptr %a58 + 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: + %t63 = load i64, ptr %a10 + ret i64 %t63 +endif3008: + br label %for.step2984 +for.step2984: + %t64 = load i64, ptr %a10 + %t65 = add i64 %t64, 1 + store i64 %t65, ptr %a10 + br label %for.cond2982 +for.end2985: + ret i64 -1 +} + +define internal i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca i64, align 16 + %a41 = alloca i64, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.1923, i64 4, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.1924, 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 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 + store { ptr, i64, i64 } { ptr @.str.1926, i64 4, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 + store { ptr, i64, i64 } { ptr @.str.1927, 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 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 + store { ptr, i64, i64 } { ptr @.str.1929, i64 9, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 + store { ptr, i64, i64 } { ptr @.str.1930, 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 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 + store { ptr, i64, i64 } { ptr @.str.1932, i64 5, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 + store { ptr, i64, i64 } { ptr @.str.1933, 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 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 + store { ptr, i64, i64 } { ptr @.str.1935, i64 3, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 + store { ptr, i64, i64 } { ptr @.str.1936, 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 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 + store { ptr, i64, i64 } { ptr @.str.1938, i64 11, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 + store { ptr, i64, i64 } { ptr @.str.1939, 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 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 + store { ptr, i64, i64 } { ptr @.str.1941, i64 3, i64 0 }, ptr %t23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 + store { ptr, i64, i64 } { ptr @.str.1942, 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 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 + store { ptr, i64, i64 } { ptr @.str.1944, i64 3, i64 0 }, ptr %t26 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 + store { ptr, i64, i64 } { ptr @.str.1945, 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 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 + store { ptr, i64, i64 } { ptr @.str.1947, i64 3, i64 0 }, ptr %t29 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 + store { ptr, i64, i64 } { ptr @.str.1948, 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 + %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 + store { ptr, i64, i64 } %t34, ptr %a35 + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a35, i32 0, i32 1 + %t37 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a38 + %t39 = load i64, ptr %t36 + %t40 = load ptr, ptr %a35 + store i64 0, ptr %a41 + br label %find.cond3009 +find.cond3009: + %t42 = load i64, ptr %a41 + %t43 = icmp slt i64 %t42, %t39 + br i1 %t43, label %find.body3010, label %find.end3013 +find.body3010: + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t42 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a46 + store { ptr, i64, i64 } %t37, ptr %a47 + %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) + %t49 = icmp ne i32 %t48, 0 + br i1 %t49, label %find.hit3011, label %find.next3012 +find.hit3011: + store i64 %t42, ptr %a38 + br label %find.end3013 +find.next3012: + %t50 = add i64 %t42, 1 + store i64 %t50, ptr %a41 + br label %find.cond3009 +find.end3013: + %t51 = load i64, ptr %a38 + %t52 = icmp sge i64 %t51, 0 + 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) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %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 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + 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) + 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 + %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 + %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) + 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) + 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) + 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) + 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) + unreachable +inrange3040: + %t118 = extractvalue { ptr, i64, i64 } %t115, 0 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t114 + %t120 = load { ptr, i64, i64 }, ptr %t119 + store { ptr, i64, i64 } %t120, ptr %a121 + call void @finch_str_copy(ptr %a122, ptr %a121) + %t123 = load { ptr, i64, i64 }, ptr %a122 + %t124 = insertvalue %S.gen.Var %t109, { ptr, i64, i64 } %t123, 5 + %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t126 = load i64, ptr %t125 + %t127 = insertvalue %S.gen.Var %t124, i64 %t126, 6 + %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t129 = load i64, ptr %t128 + %t130 = insertvalue %S.gen.Var %t127, i64 %t129, 7 + %t131 = load i64, ptr %t87 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t86 + %t134 = getelementptr inbounds %S.gen.Var, ptr %t133, i64 %t131 + store %S.gen.Var %t130, ptr %t134 + store i64 %t132, ptr %t87 + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic3041, label %ok3042 +panic3041: + call void @finch_panic(ptr @.str.1969, i64 1204, ptr @.str.1970) + unreachable +ok3042: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 23 + %t138 = load i64, ptr %t137 + %t139 = add i64 %t138, 1 + store i64 %t139, ptr %t137 + %t140 = load ptr, ptr %a1 + %t141 = load %S.ast.Node, ptr %a2 + %t142 = load { ptr, i64, i64 }, ptr %a3 + %t143 = load %S.ast.Type, ptr %a4 + %t144 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.dbgVariable(ptr %t140, %S.ast.Node %t141, { ptr, i64, i64 } %t142, %S.ast.Type %t143, { ptr, i64, i64 } %t144) + %t145 = load ptr, ptr %a1 + %t146 = icmp eq ptr %t145, null + br i1 %t146, label %panic3043, label %ok3044 +panic3043: + call void @finch_panic(ptr @.str.1971, i64 1206, ptr @.str.1972) + unreachable +ok3044: + %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 26 + %t148 = load i1, ptr %t147 + br label %logic.from3045 +logic.from3045: + br i1 %t148, label %logic.rhs3046, label %logic.end3047 +logic.rhs3046: + %t149 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t149, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.1973, i64 3, i64 0 }, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp eq i32 %t152, 0 + br label %logic.rend3048 +logic.rend3048: + br label %logic.end3047 +logic.end3047: + %t154 = phi i1 [ false, %logic.from3045 ], [ %t153, %logic.rend3048 ] + br label %logic.from3049 +logic.from3049: + br i1 %t154, label %logic.rhs3050, label %logic.end3051 +logic.rhs3050: + %t155 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.1975, i64 1, i64 0 }, ptr %a158 + %t159 = call i32 @finch_str_starts(ptr %a156, ptr %a158) + %t160 = icmp ne i32 %t159, 0 + %t161 = xor i1 %t160, true + br label %logic.rend3052 +logic.rend3052: + br label %logic.end3051 +logic.end3051: + %t162 = phi i1 [ false, %logic.from3049 ], [ %t161, %logic.rend3052 ] + br i1 %t162, label %then3053, label %endif3055 +then3053: + %t163 = load ptr, ptr %a1 + %t164 = icmp eq ptr %t163, null + br i1 %t164, label %panic3056, label %ok3057 +panic3056: + call void @finch_panic(ptr @.str.1976, i64 1207, ptr @.str.1977) + unreachable +ok3057: + %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 0 + %t166 = load ptr, ptr %a1 + %t167 = icmp eq ptr %t166, null + br i1 %t167, label %panic3058, label %ok3059 +panic3058: + call void @finch_panic(ptr @.str.1978, i64 1207, ptr @.str.1979) + unreachable +ok3059: + %t168 = getelementptr inbounds %S.gen.Gen, ptr %t166, i32 0, i32 12 + %t169 = getelementptr inbounds %S.gen.FnSig, ptr %t168, i32 0, i32 16 + %t170 = load i64, ptr %t169 + %t171 = load { ptr, i64, i64 }, ptr %t165 + %t172 = extractvalue { ptr, i64, i64 } %t171, 1 + %t173 = icmp uge i64 %t170, %t172 + br i1 %t173, label %range3060, label %inrange3061 +range3060: + call void @finch_panic_index(ptr @.str.1980, i64 1207, i64 %t170, i64 %t172) + unreachable +inrange3061: + %t174 = extractvalue { ptr, i64, i64 } %t171, 0 + %t175 = getelementptr inbounds %S.ast.Program, ptr %t174, i64 %t170 + %t176 = getelementptr inbounds %S.ast.Program, ptr %t175, i32 0, i32 8 + %t177 = load ptr, ptr %a1 + %t178 = icmp eq ptr %t177, null + br i1 %t178, label %panic3062, label %ok3063 +panic3062: + call void @finch_panic(ptr @.str.1981, i64 1207, ptr @.str.1982) + unreachable +ok3063: + %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 12 + %t180 = getelementptr inbounds %S.gen.FnSig, ptr %t179, i32 0, i32 17 + %t181 = load i64, ptr %t180 + %t182 = load { ptr, i64, i64 }, ptr %t176 + %t183 = extractvalue { ptr, i64, i64 } %t182, 1 + %t184 = icmp uge i64 %t181, %t183 + br i1 %t184, label %range3064, label %inrange3065 +range3064: + call void @finch_panic_index(ptr @.str.1983, i64 1207, i64 %t181, i64 %t183) + unreachable +inrange3065: + %t185 = extractvalue { ptr, i64, i64 } %t182, 0 + %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t181 + %t187 = load %S.ast.Node, ptr %t186 + store %S.ast.Node %t187, ptr %a188 + call void @finch.copy.S_ast_Node(ptr %a189, ptr %a188) + %t190 = load %S.ast.Node, ptr %a189 + store %S.ast.Node %t190, ptr %a191 + %t192 = load ptr, ptr %a1 + %t193 = icmp eq ptr %t192, null + br i1 %t193, label %panic3066, label %ok3067 +panic3066: + call void @finch_panic(ptr @.str.1984, i64 1208, ptr @.str.1985) + unreachable +ok3067: + %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 27 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1986, i64 3, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t196, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a197 + store { ptr, i64, i64 } %t200, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.1987, i64 1, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a201 + %t205 = load %S.ast.Type, ptr %a4 + %t206 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t205) + store { ptr, i64, i64 } %t204, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a207 + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a211 + %t215 = load ptr, ptr %a1 + %t216 = icmp eq ptr %t215, null + br i1 %t216, label %panic3068, label %ok3069 +panic3068: + call void @finch_panic(ptr @.str.1989, i64 1208, ptr @.str.1990) + unreachable +ok3069: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 1 + %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t219 = load i64, ptr %t218 + %t220 = load { ptr, i64, i64 }, ptr %t217 + %t221 = extractvalue { ptr, i64, i64 } %t220, 1 + %t222 = icmp uge i64 %t219, %t221 + br i1 %t222, label %range3070, label %inrange3071 +range3070: + call void @finch_panic_index(ptr @.str.1991, i64 1208, i64 %t219, i64 %t221) + unreachable +inrange3071: + %t223 = extractvalue { ptr, i64, i64 } %t220, 0 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t219 + %t225 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t214, ptr %a227 + store { ptr, i64, i64 } %t225, ptr %a228 + call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a226 + store { ptr, i64, i64 } %t229, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.1992, i64 1, i64 0 }, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a230 + %t234 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t235 = load i64, ptr %t234 + call void @finch_str_from_int(ptr %a236, i64 %t235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + store { ptr, i64, i64 } %t233, ptr %a239 + store { ptr, i64, i64 } %t237, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a238 + store { ptr, i64, i64 } %t241, ptr %a243 + store { ptr, i64, i64 } { ptr @.str.1993, i64 1, i64 0 }, ptr %a244 + call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a242 + %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t247 = load i64, ptr %t246 + call void @finch_str_from_int(ptr %a248, i64 %t247) + %t249 = load { ptr, i64, i64 }, ptr %a248 + store { ptr, i64, i64 } %t245, ptr %a251 + store { ptr, i64, i64 } %t249, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a250 + store { ptr, i64, i64 } %t253, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + %t257 = load { ptr, i64, i64 }, ptr %a254 + %t258 = load ptr, ptr %a1 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic3072, label %ok3073 +panic3072: + call void @finch_panic(ptr @.str.1995, i64 1208, ptr @.str.1996) + unreachable +ok3073: + %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 1 + %t261 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 13 + %t262 = load i64, ptr %t261 + %t263 = load { ptr, i64, i64 }, ptr %t260 + %t264 = extractvalue { ptr, i64, i64 } %t263, 1 + %t265 = icmp uge i64 %t262, %t264 + br i1 %t265, label %range3074, label %inrange3075 +range3074: + call void @finch_panic_index(ptr @.str.1997, i64 1208, i64 %t262, i64 %t264) + unreachable +inrange3075: + %t266 = extractvalue { ptr, i64, i64 } %t263, 0 + %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t262 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t257, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } %t272, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.1998, i64 1, i64 0 }, ptr %a275 + call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a273 + %t277 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 11 + %t278 = load i64, ptr %t277 + call void @finch_str_from_int(ptr %a279, i64 %t278) + %t280 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t276, ptr %a282 + store { ptr, i64, i64 } %t280, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a281 + store { ptr, i64, i64 } %t284, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.1999, i64 1, i64 0 }, ptr %a287 + call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a285 + %t289 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 14 + %t290 = load i64, ptr %t289 + call void @finch_str_from_int(ptr %a291, i64 %t290) + %t292 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t288, ptr %a294 + store { ptr, i64, i64 } %t292, ptr %a295 + call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a293 + %t297 = load i64, ptr %t195 + %t298 = add i64 %t297, 1 + call void @finch_arr_reserve(ptr %t194, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t299 = load ptr, ptr %t194 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 + store { ptr, i64, i64 } %t296, ptr %t300 + store i64 %t298, ptr %t195 + %t301 = load ptr, ptr %a1 + %t302 = load %S.ast.Node, ptr %a2 + %t303 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t304 = load i64, ptr %t303 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t306 = load i64, ptr %t305 + %t307 = load %S.ast.Type, ptr %a4 + %t308 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t307) + store { ptr, i64, i64 } { ptr @.str.2000, i64 9, i64 0 }, ptr %a310 + store { ptr, i64, i64 } %t308, ptr %a311 + call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.2001, i64 1, i64 0 }, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + %t317 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t316, ptr %a319 + store { ptr, i64, i64 } %t317, ptr %a320 + call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) + %t321 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t321, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.2002, i64 4, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a322 + call void @finch.gen.noteRef(ptr %t301, %S.ast.Node %t302, i64 %t304, i64 %t306, { ptr, i64, i64 } %t325, { ptr, i64, i64 } { ptr @.str.2003, i64 0, i64 0 }, i64 0, i64 0) + br label %endif3055 +endif3055: + %t326 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_copy(ptr %a328, ptr %a327) + %t329 = load { ptr, i64, i64 }, ptr %a328 + ret { ptr, i64, i64 } %t329 +} + +define internal void @finch.gen.pushScope(ptr %p0) { +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 %panic3076, label %ok3077 +panic3076: + call void @finch_panic(ptr @.str.2004, i64 1215, ptr @.str.2005) + unreachable +ok3077: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 10 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = add i64 %t6, 1 + call void @finch_arr_reserve(ptr %t4, i64 %t7, i64 ptrtoint (ptr getelementptr (%S.gen.Scope, ptr null, i32 1) to i64)) + %t8 = load ptr, ptr %t4 + %t9 = getelementptr inbounds %S.gen.Scope, ptr %t8, i64 %t6 + store %S.gen.Scope zeroinitializer, ptr %t9 + store i64 %t7, ptr %t5 + ret void +} + +define internal void @finch.gen.popScope(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic3078, label %ok3079 +panic3078: + call void @finch_panic(ptr @.str.2006, i64 1219, ptr @.str.2007) + 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) + 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 + 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) { +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 + 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) + unreachable +ok3083: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 + %t6 = load i64, ptr %a2 + %t7 = load { ptr, i64, i64 }, ptr %t5 + %t8 = extractvalue { ptr, i64, i64 } %t7, 1 + %t9 = icmp uge i64 %t6, %t8 + br i1 %t9, label %range3084, label %inrange3085 +range3084: + call void @finch_panic_index(ptr @.str.2012, i64 1224, i64 %t6, i64 %t8) + unreachable +inrange3085: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 + %t12 = load %S.gen.Scope, ptr %t11 + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + %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) + 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) + 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: + ret void +} + +define internal void @finch.gen.unwind(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a8 = 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 %panic3112, label %ok3113 +panic3112: + call void @finch_panic(ptr @.str.2031, i64 1244, ptr @.str.2032) + unreachable +ok3113: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 %t7, ptr %a8 + br label %while.cond3114 +while.cond3114: + %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: + %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: + ret void +} + +define internal void @finch.gen.endScope(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %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 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %p0) { +entry: + %a1 = alloca %S.ast.Node, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = 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 %a4 + store { ptr, i64, i64 } { ptr @.str.2041, i64 3, i64 0 }, ptr %a5 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br i1 %t7, label %then3128, label %endif3130 +then3128: + %t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 1 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } %t9, ptr %a10 + call void @finch_str_copy(ptr %a11, ptr %a10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + ret { ptr, i64, i64 } %t12 +endif3130: + %t13 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.2042, i64 6, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br label %logic.from3131 +logic.from3131: + br i1 %t18, label %logic.end3133, label %logic.rhs3132 +logic.rhs3132: + %t19 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 + %t20 = load { ptr, i64, i64 }, ptr %t19 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2043, i64 5, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br label %logic.rend3134 +logic.rend3134: + br label %logic.end3133 +logic.end3133: + %t25 = phi i1 [ true, %logic.from3131 ], [ %t24, %logic.rend3134 ] + br i1 %t25, label %then3135, label %endif3137 +then3135: + %t26 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 + %t27 = load { ptr, i64, i64 }, ptr %t26 + %t28 = extractvalue { ptr, i64, i64 } %t27, 1 + %t29 = icmp uge i64 0, %t28 + br i1 %t29, label %range3138, label %inrange3139 +range3138: + call void @finch_panic_index(ptr @.str.2044, i64 1266, i64 0, i64 %t28) + unreachable +inrange3139: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 + %t32 = load %S.ast.Node, ptr %t31 + %t33 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t32) + ret { ptr, i64, i64 } %t33 +endif3137: + ret { ptr, i64, i64 } { ptr @.str.2045, i64 0, i64 0 } +} + +define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Node, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca i64, align 16 + %a50 = alloca i64, align 16 + %a55 = alloca { ptr, i64, 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a94 = 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 + 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 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 + store { ptr, i64, i64 } { ptr @.str.2047, i64 3, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 + store { ptr, i64, i64 } { ptr @.str.2048, 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 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 + store { ptr, i64, i64 } { ptr @.str.2050, i64 5, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 + store { ptr, i64, i64 } { ptr @.str.2051, 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 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 + store { ptr, i64, i64 } { ptr @.str.2053, i64 7, i64 0 }, ptr %t13 + %t14 = insertvalue { ptr, i64, i64 } undef, ptr %t5, 0 + %t15 = insertvalue { ptr, i64, i64 } %t14, i64 8, 1 + %t16 = insertvalue { ptr, i64, i64 } %t15, i64 8, 2 + store { ptr, i64, i64 } %t16, ptr %a17 + %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 + %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: + %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) + unreachable +inrange3144: + %t28 = extractvalue { ptr, i64, i64 } %t25, 0 + %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 + %t30 = load %S.ast.Node, ptr %t29 + %t31 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t30) + %t32 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t31, ptr %a33 + 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: + 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) + 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) + 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 + 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: + 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) + 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: + 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: + 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: + ret i1 false +} + +define internal void @finch.gen.declare(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %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 + %a62 = alloca %S.ast.Node, 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 + %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 + %a251 = 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 + %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 + %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 + %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 + %a370 = 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 + %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 + %a583 = alloca { ptr, i64, i64 }, align 16 + %a584 = 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 + %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 + %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 + %a721 = alloca { ptr, i64, i64 }, align 16 + %a722 = alloca { ptr, i64, i64 }, align 16 + %a723 = 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 + %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 + %a796 = alloca { ptr, i64, i64 }, align 16 + %a797 = alloca { ptr, i64, i64 }, align 16 + %a798 = 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 + %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 + %a831 = alloca { ptr, i64, i64 }, align 16 + %a832 = 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 + %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 + %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 + %a930 = 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 + 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) + unreachable +ok3203: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 0 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + %t6 = load i64, ptr %t5 + store i64 0, ptr %a7 + br label %for.cond3204 +for.cond3204: + %t8 = load i64, ptr %a7 + %t9 = icmp slt i64 %t8, %t6 + br i1 %t9, label %for.body3205, label %for.end3207 +for.body3205: + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic3208, label %ok3209 +panic3208: + call void @finch_panic(ptr @.str.2065, i64 1297, ptr @.str.2066) + unreachable +ok3209: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 0 + %t13 = load i64, ptr %a7 + %t14 = load { ptr, i64, i64 }, ptr %t12 + %t15 = extractvalue { ptr, i64, i64 } %t14, 1 + %t16 = icmp uge i64 %t13, %t15 + br i1 %t16, label %range3210, label %inrange3211 +range3210: + call void @finch_panic_index(ptr @.str.2067, i64 1297, i64 %t13, i64 %t15) + unreachable +inrange3211: + %t17 = extractvalue { ptr, i64, i64 } %t14, 0 + %t18 = getelementptr inbounds %S.ast.Program, ptr %t17, i64 %t13 + %t19 = getelementptr inbounds %S.ast.Program, ptr %t18, i32 0, i32 0 + %t20 = load { ptr, i64, i64 }, ptr %t19 + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic3212, label %ok3213 +panic3212: + call void @finch_panic(ptr @.str.2068, i64 1297, ptr @.str.2069) + unreachable +ok3213: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 + store { ptr, i64, i64 } %t20, ptr %a24 + call void @finch_str_copy(ptr %a25, ptr %a24) + %t26 = load { ptr, i64, i64 }, ptr %a25 + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + %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 + %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) + 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) + 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 + %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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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 + %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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + unreachable +ok3345: + %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0 + %t483 = load i64, ptr %a460 + %t484 = load { ptr, i64, i64 }, ptr %t482 + %t485 = extractvalue { ptr, i64, i64 } %t484, 1 + %t486 = icmp uge i64 %t483, %t485 + br i1 %t486, label %range3346, label %inrange3347 +range3346: + call void @finch_panic_index(ptr @.str.2142, i64 1345, i64 %t483, i64 %t485) + unreachable +inrange3347: + %t487 = extractvalue { ptr, i64, i64 } %t484, 0 + %t488 = getelementptr inbounds %S.ast.Program, ptr %t487, i64 %t483 + %t489 = getelementptr inbounds %S.ast.Program, ptr %t488, i32 0, i32 8 + %t490 = getelementptr inbounds { ptr, i64, i64 }, ptr %t489, i32 0, i32 1 + %t491 = load i64, ptr %t490 + store i64 0, ptr %a492 + br label %for.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) + 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) + 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) + 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) + 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) + 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 + %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: + %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) + 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) + 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) + 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 + %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 %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) + 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 + %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 %then3408, label %endif3410 +then3408: + %t707 = load ptr, ptr %a1 + %t708 = load %S.ast.Node, ptr %a515 + %t709 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 + %t710 = load { ptr, i64, i64 }, ptr %t709 + store { ptr, i64, i64 } { ptr @.str.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 + %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) + 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 + 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 + %t806 = load { ptr, i64, i64 }, ptr %t805 + store { ptr, i64, i64 } { ptr @.str.2187, i64 1, i64 0 }, ptr %a808 + store { ptr, i64, i64 } %t806, ptr %a809 + call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) + %t810 = load { ptr, i64, i64 }, ptr %a807 + store { ptr, i64, i64 } %t810, ptr %a812 + store { ptr, i64, i64 } { ptr @.str.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) + 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 + %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 %panic3433, label %ok3434 +panic3433: + call void @finch_panic(ptr @.str.2192, i64 1389, ptr @.str.2193) + 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 + %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) + 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) + 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 + %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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + unreachable +inrange3541: + %t1193 = extractvalue { ptr, i64, i64 } %t1190, 0 + %t1194 = getelementptr inbounds %S.ast.Node, ptr %t1193, i64 %t1189 + %t1195 = load %S.ast.Node, ptr %t1194 + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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: + ret void +} + +define internal i64 @finch.gen.findTemplate(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, i1 %p4) { +entry: + %a1 = alloca ptr, 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 i1, align 16 + %a11 = alloca i64, align 16 + %a24 = alloca %S.gen.Template, align 16 + %a25 = alloca %S.gen.Template, align 16 + %a27 = alloca %S.gen.Template, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 + 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 + 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) + unreachable +ok3604: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load i64, ptr %t9 + store i64 0, ptr %a11 + br label %for.cond3605 +for.cond3605: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t10 + br i1 %t13, label %for.body3606, label %for.end3608 +for.body3606: + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic3609, label %ok3610 +panic3609: + call void @finch_panic(ptr @.str.2283, i64 1447, ptr @.str.2284) + unreachable +ok3610: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16 + %t17 = load i64, ptr %a11 + %t18 = load { ptr, i64, i64 }, ptr %t16 + %t19 = extractvalue { ptr, i64, i64 } %t18, 1 + %t20 = icmp uge i64 %t17, %t19 + br i1 %t20, label %range3611, label %inrange3612 +range3611: + call void @finch_panic_index(ptr @.str.2285, i64 1447, i64 %t17, i64 %t19) + unreachable +inrange3612: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.gen.Template, ptr %t21, i64 %t17 + %t23 = load %S.gen.Template, ptr %t22 + store %S.gen.Template %t23, ptr %a24 + call void @finch.copy.S_gen_Template(ptr %a25, ptr %a24) + %t26 = load %S.gen.Template, ptr %a25 + store %S.gen.Template %t26, ptr %a27 + %t28 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 0 + %t29 = load { ptr, i64, i64 }, ptr %t28 + %t30 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t29, ptr %a31 + 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: + %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 + store { ptr, i64, i64 } %t36, ptr %a38 + 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: + %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 + store { ptr, i64, i64 } %t44, 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.rend3620 +logic.rend3620: + br label %logic.end3619 +logic.end3619: + %t50 = phi i1 [ false, %logic.from3617 ], [ %t49, %logic.rend3620 ] + br label %logic.from3621 +logic.from3621: + br i1 %t50, label %logic.rhs3622, label %logic.end3623 +logic.rhs3622: + %t51 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 6 + %t52 = load i1, ptr %t51 + %t53 = load i1, ptr %a5 + %t54 = icmp eq i1 %t52, %t53 + br label %logic.rend3624 +logic.rend3624: + br label %logic.end3623 +logic.end3623: + %t55 = phi i1 [ false, %logic.from3621 ], [ %t54, %logic.rend3624 ] + br i1 %t55, label %then3625, label %endif3627 +then3625: + %t56 = load i64, ptr %a11 + ret i64 %t56 +endif3627: + br label %for.step3607 +for.step3607: + %t57 = load i64, ptr %a11 + %t58 = add i64 %t57, 1 + store i64 %t58, ptr %a11 + br label %for.cond3605 +for.end3608: + ret i64 -1 +} + +define internal { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca %S.ast.Type, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond3628 +each.cond3628: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body3629, label %each.end3631 +each.body3629: + %t8 = load ptr, ptr %a1 + %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 %t6 + %t10 = load %S.ast.Type, ptr %t9 + store %S.ast.Type %t10, ptr %a11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t13 = load %S.ast.Type, ptr %a11 + %t14 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t13) + %t15 = load i64, ptr %t12 + %t16 = add i64 %t15, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t16, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t17 = load ptr, ptr %a2 + %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: + %t19 = load i64, ptr %a3 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a3 + br label %each.cond3628 +each.end3631: + %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 + call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) + %t24 = load { ptr, i64, i64 }, ptr %a23 + ret { ptr, i64, i64 } %t24 +} + +define internal %S.ast.Type @finch.gen.instStruct(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { +entry: + %a1 = alloca ptr, 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 %S.ast.Node, align 16 + %a10 = alloca 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 + %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 + %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 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = 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 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %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 + 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 + store %S.ast.Node %p4, ptr %a5 + %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) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, 0 + br i1 %t12, label %then3632, label %endif3634 +then3632: + %t13 = load ptr, ptr %a1 + %t14 = load %S.ast.Node, ptr %a5 + %t15 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.2288, i64 34, i64 0 }, ptr %a17 + store { ptr, i64, i64 } %t15, ptr %a18 + call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) + %t19 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t19, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2289, i64 28, i64 0 }, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a20 + %t24 = load { ptr, i64, i64 }, ptr %a3 + 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 + 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) + 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) + 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 + 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) + 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) + 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 +} + +define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca %S.ast.Node, align 16 + %a16 = alloca %S.gen.Template, align 16 + %a17 = alloca %S.gen.Template, align 16 + %a19 = alloca %S.gen.Template, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = 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 + %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 + %a49 = alloca i64, align 16 + %a58 = alloca i64, align 16 + %a81 = alloca %S.ast.Node, align 16 + %a82 = alloca %S.ast.Node, 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 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = 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 + %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 + %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 + %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 + %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 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 + %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 + %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 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = 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 + %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 + %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 + store ptr %p0, ptr %a1 + store i64 %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store %S.ast.Type %p3, ptr %a4 + 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) + unreachable +ok3650: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 + %t9 = load i64, ptr %a2 + %t10 = load { ptr, i64, i64 }, ptr %t8 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range3651, label %inrange3652 +range3651: + call void @finch_panic_index(ptr @.str.2308, i64 1483, i64 %t9, i64 %t11) + unreachable +inrange3652: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 + %t15 = load %S.gen.Template, ptr %t14 + store %S.gen.Template %t15, ptr %a16 + call void @finch.copy.S_gen_Template(ptr %a17, ptr %a16) + %t18 = load %S.gen.Template, ptr %a17 + store %S.gen.Template %t18, ptr %a19 + %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 + 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 + %t27 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t26) + 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) + 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) + 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) + 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 + 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 + %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 + %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) + 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 + %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 + 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 } %t229, ptr %a230 + %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) + unreachable +ok3678: + %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19 + %t234 = load { ptr, i64, i64 }, ptr %t233 + store { ptr, i64, i64 } %t234, ptr %a235 + call void @finch_str_copy(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) + 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) + 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) + %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) + unreachable +ok3684: + %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13 + store { ptr, i64, i64 } %t255, ptr %a259 + call void @finch_str_copy(ptr %a260, ptr %a259) + %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) + 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) + 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: + %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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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 +} + +define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca ptr, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca i64, align 16 + %a28 = alloca i64, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca i64, align 16 + %a47 = alloca i64, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + store ptr %p4, ptr %a5 + %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 + %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: + %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: + %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: + %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 + store i64 -1, ptr %a25 + %t26 = load i64, ptr %t22 + %t27 = load ptr, ptr %a4 + store i64 0, ptr %a28 + br label %find.cond3728 +find.cond3728: + %t29 = load i64, ptr %a28 + %t30 = icmp slt i64 %t29, %t26 + br i1 %t30, label %find.body3729, label %find.end3732 +find.body3729: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 %t29 + %t32 = load { ptr, i64, i64 }, ptr %t31 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } %t24, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br i1 %t36, label %find.hit3730, label %find.next3731 +find.hit3730: + store i64 %t29, ptr %a25 + br label %find.end3732 +find.next3731: + %t37 = add i64 %t29, 1 + store i64 %t37, ptr %a28 + br label %find.cond3728 +find.end3732: + %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: + %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 + store i64 -1, ptr %a44 + %t45 = load i64, ptr %t41 + %t46 = load ptr, ptr %a4 + store i64 0, ptr %a47 + br label %find.cond3737 +find.cond3737: + %t48 = load i64, ptr %a47 + %t49 = icmp slt i64 %t48, %t45 + br i1 %t49, label %find.body3738, label %find.end3741 +find.body3738: + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t48 + %t51 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } %t51, ptr %a52 + store { ptr, i64, i64 } %t43, ptr %a53 + %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) + %t55 = icmp ne i32 %t54, 0 + br i1 %t55, label %find.hit3739, label %find.next3740 +find.hit3739: + store i64 %t48, ptr %a44 + br label %find.end3741 +find.next3740: + %t56 = add i64 %t48, 1 + store i64 %t56, ptr %a47 + br label %find.cond3737 +find.end3741: + %t57 = load i64, ptr %a44 + store i64 %t57, ptr %a58 + %t59 = load ptr, ptr %a5 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic3742, label %ok3743 +panic3742: + call void @finch_panic(ptr @.str.2357, i64 1533, ptr @.str.2358) + unreachable +ok3743: + %t61 = getelementptr inbounds %S.gen.Binds, ptr %t59, i32 0, i32 1 + %t62 = load i64, ptr %a58 + %t63 = load { ptr, i64, i64 }, ptr %t61 + %t64 = extractvalue { ptr, i64, i64 } %t63, 1 + %t65 = icmp uge i64 %t62, %t64 + br i1 %t65, label %range3744, label %inrange3745 +range3744: + call void @finch_panic_index(ptr @.str.2359, i64 1533, i64 %t62, i64 %t64) + unreachable +inrange3745: + %t66 = extractvalue { ptr, i64, i64 } %t63, 0 + %t67 = getelementptr inbounds i1, ptr %t66, i64 %t62 + %t68 = load i1, ptr %t67 + %t69 = xor i1 %t68, true + br i1 %t69, label %then3746, label %endif3748 +then3746: + %t70 = load %S.ast.Type, ptr %a3 + %t71 = load ptr, ptr %a5 + %t72 = icmp eq ptr %t71, null + br i1 %t72, label %panic3749, label %ok3750 +panic3749: + call void @finch_panic(ptr @.str.2360, i64 1534, ptr @.str.2361) + unreachable +ok3750: + %t73 = getelementptr inbounds %S.gen.Binds, ptr %t71, i32 0, i32 0 + %t74 = load i64, ptr %a58 + %t75 = load { ptr, i64, i64 }, ptr %t73 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 %t74, %t76 + br i1 %t77, label %range3751, label %inrange3752 +range3751: + call void @finch_panic_index(ptr @.str.2362, i64 1534, i64 %t74, i64 %t76) + unreachable +inrange3752: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 + store %S.ast.Type %t70, ptr %a80 + call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) + %t82 = load %S.ast.Type, ptr %a81 + 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) + 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) + 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: + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + %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) + 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) + 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: + ret void +} + +define internal %S.gen.Val @finch.gen.genericCall(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.gen.Template, align 16 + %a17 = alloca %S.gen.Template, align 16 + %a19 = alloca %S.gen.Template, align 16 + %a39 = alloca %S.ast.Node, align 16 + %a40 = alloca %S.ast.Node, align 16 + %a42 = alloca %S.ast.Node, align 16 + %a47 = alloca i64, align 16 + %a53 = 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 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + 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) + unreachable +ok3830: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 + %t9 = load i64, ptr %a3 + %t10 = load { ptr, i64, i64 }, ptr %t8 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range3831, label %inrange3832 +range3831: + call void @finch_panic_index(ptr @.str.2386, i64 1560, i64 %t9, i64 %t11) + unreachable +inrange3832: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 + %t15 = load %S.gen.Template, ptr %t14 + store %S.gen.Template %t15, ptr %a16 + call void @finch.copy.S_gen_Template(ptr %a17, ptr %a16) + %t18 = load %S.gen.Template, ptr %a17 + 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) + unreachable +ok3834: + %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 0 + %t23 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 + %t24 = load i64, ptr %t23 + %t25 = load { ptr, i64, i64 }, ptr %t22 + %t26 = extractvalue { ptr, i64, i64 } %t25, 1 + %t27 = icmp uge i64 %t24, %t26 + br i1 %t27, label %range3835, label %inrange3836 +range3835: + call void @finch_panic_index(ptr @.str.2389, i64 1561, i64 %t24, i64 %t26) + unreachable +inrange3836: + %t28 = extractvalue { ptr, i64, i64 } %t25, 0 + %t29 = getelementptr inbounds %S.ast.Program, ptr %t28, i64 %t24 + %t30 = getelementptr inbounds %S.ast.Program, ptr %t29, i32 0, i32 8 + %t31 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 + %t32 = load i64, ptr %t31 + %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) + unreachable +inrange3838: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t32 + %t38 = load %S.ast.Node, ptr %t37 + store %S.ast.Node %t38, ptr %a39 + call void @finch.copy.S_ast_Node(ptr %a40, ptr %a39) + %t41 = load %S.ast.Node, ptr %a40 + store %S.ast.Node %t41, ptr %a42 + %t43 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = sub i64 %t45, 1 + store i64 %t46, ptr %a47 + %t48 = load ptr, ptr %a1 + %t49 = load %S.ast.Node, ptr %a2 + %t50 = load i64, ptr %a4 + %t51 = load i64, ptr %a47 + %t52 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.checkArgs(ptr %t48, %S.ast.Node %t49, i64 %t50, i64 %t51, { ptr, i64, i64 } %t52) + store { ptr, i64, i64 } zeroinitializer, ptr %a53 + %t54 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t55 = getelementptr inbounds %S.ast.Type, ptr %t54, i32 0, i32 1 + %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: + %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 + %t62 = load i64, ptr %t61 + %t63 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 + %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: + %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 + 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 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i32 0, i32 1 + %t76 = load i64, ptr %t75 + call void @finch_str_from_int(ptr %a77, i64 %t76) + %t78 = load { ptr, i64, i64 }, ptr %a77 + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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 + %t301 = load ptr, ptr %a1 + %t302 = load %S.ast.Node, ptr %a2 + %t303 = load %S.gen.FnSig, ptr %a300 + call void @finch.gen.noteCall(ptr %t301, %S.ast.Node %t302, %S.gen.FnSig %t303) + store { ptr, i64, i64 } zeroinitializer, ptr %a304 + %t305 = load i64, ptr %a47 + store i64 0, ptr %a306 + br label %for.cond3885 +for.cond3885: + %t307 = load i64, ptr %a306 + %t308 = icmp slt i64 %t307, %t305 + br i1 %t308, label %for.body3886, label %for.end3888 +for.body3886: + %t309 = load ptr, ptr %a1 + %t310 = load i64, ptr %a306 + %t311 = load { ptr, i64, i64 }, ptr %a152 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range3889, label %inrange3890 +range3889: + call void @finch_panic_index(ptr @.str.2414, i64 1598, i64 %t310, i64 %t312) + unreachable +inrange3890: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds %S.gen.Val, ptr %t314, i64 %t310 + %t316 = load %S.gen.Val, ptr %t315 + %t317 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 + %t318 = load i64, ptr %a306 + %t319 = load { ptr, i64, i64 }, ptr %t317 + %t320 = extractvalue { ptr, i64, i64 } %t319, 1 + %t321 = icmp uge i64 %t318, %t320 + br i1 %t321, label %range3891, label %inrange3892 +range3891: + call void @finch_panic_index(ptr @.str.2415, i64 1598, i64 %t318, i64 %t320) + unreachable +inrange3892: + %t322 = extractvalue { ptr, i64, i64 } %t319, 0 + %t323 = getelementptr inbounds %S.ast.Type, ptr %t322, i64 %t318 + %t324 = load %S.ast.Type, ptr %t323 + %t325 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t326 = load i64, ptr %a4 + %t327 = load i64, ptr %a306 + %t328 = add i64 %t326, %t327 + %t329 = load { ptr, i64, i64 }, ptr %t325 + %t330 = extractvalue { ptr, i64, i64 } %t329, 1 + %t331 = icmp uge i64 %t328, %t330 + br i1 %t331, label %range3893, label %inrange3894 +range3893: + call void @finch_panic_index(ptr @.str.2416, i64 1598, i64 %t328, i64 %t330) + unreachable +inrange3894: + %t332 = extractvalue { ptr, i64, i64 } %t329, 0 + %t333 = getelementptr inbounds %S.ast.Node, ptr %t332, i64 %t328 + %t334 = load %S.ast.Node, ptr %t333 + %t335 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 14 + %t336 = load i64, ptr %a306 + %t337 = load { ptr, i64, i64 }, ptr %t335 + %t338 = extractvalue { ptr, i64, i64 } %t337, 1 + %t339 = icmp uge i64 %t336, %t338 + br i1 %t339, label %range3895, label %inrange3896 +range3895: + call void @finch_panic_index(ptr @.str.2418, i64 1598, i64 %t336, i64 %t338) + unreachable +inrange3896: + %t340 = extractvalue { ptr, i64, i64 } %t337, 0 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i64 %t336 + %t342 = load { ptr, i64, i64 }, ptr %t341 + store { ptr, i64, i64 } { ptr @.str.2417, i64 10, i64 0 }, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.2419, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a347 + %t351 = call %S.gen.Val @finch.gen.coerce(ptr %t309, %S.gen.Val %t316, %S.ast.Type %t324, %S.ast.Node %t334, { ptr, i64, i64 } %t350) + store %S.gen.Val %t351, ptr %a352 + %t353 = getelementptr inbounds { ptr, i64, i64 }, ptr %a304, i32 0, i32 1 + %t354 = load ptr, ptr %a1 + %t355 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 + %t356 = load i64, ptr %a306 + %t357 = load { ptr, i64, i64 }, ptr %t355 + %t358 = extractvalue { ptr, i64, i64 } %t357, 1 + %t359 = icmp uge i64 %t356, %t358 + br i1 %t359, label %range3897, label %inrange3898 +range3897: + call void @finch_panic_index(ptr @.str.2420, i64 1599, i64 %t356, i64 %t358) + unreachable +inrange3898: + %t360 = extractvalue { ptr, i64, i64 } %t357, 0 + %t361 = getelementptr inbounds %S.ast.Type, ptr %t360, i64 %t356 + %t362 = load %S.ast.Type, ptr %t361 + %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t354, %S.ast.Type %t362) + store { ptr, i64, i64 } %t363, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.2421, i64 1, i64 0 }, ptr %a366 + call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a364 + %t368 = getelementptr inbounds %S.gen.Val, ptr %a352, i32 0, i32 0 + %t369 = load { ptr, i64, i64 }, ptr %t368 + store { ptr, i64, i64 } %t367, ptr %a371 + store { ptr, i64, i64 } %t369, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a370 + %t374 = load i64, ptr %t353 + %t375 = add i64 %t374, 1 + call void @finch_arr_reserve(ptr %a304, i64 %t375, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t376 = load ptr, ptr %a304 + %t377 = getelementptr inbounds { ptr, i64, i64 }, ptr %t376, i64 %t374 + store { ptr, i64, i64 } %t373, ptr %t377 + store i64 %t375, ptr %t353 + br label %for.step3887 +for.step3887: + %t378 = load i64, ptr %a306 + %t379 = add i64 %t378, 1 + store i64 %t379, ptr %a306 + br label %for.cond3885 +for.end3888: + %t380 = load ptr, ptr %a1 + %t381 = load %S.gen.FnSig, ptr %a300 + %t382 = load %S.ast.Node, ptr %a2 + %t383 = load { ptr, i64, i64 }, ptr %a304 + %t384 = load { ptr, i64, i64 }, ptr %a5 + %t385 = call %S.gen.Val @finch.gen.emitCall(ptr %t380, %S.gen.FnSig %t381, %S.ast.Node %t382, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384) + ret %S.gen.Val %t385 +} + +define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.cimport.CField, ptr %src + store %S.cimport.CField %t1, ptr %dst + %t2 = getelementptr inbounds %S.cimport.CField, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.cimport.CField, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CField, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.cimport.CField, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.copy.arr_S_cimport_CField(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.cimport.CField, 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.cond3907 +n.cond3907: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body3908, label %n.end3909 +n.body3908: + %t8 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.cimport.CField, ptr %t2, i64 %t6 + call void @finch.copy.S_cimport_CField(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond3907 +n.end3909: + ret void +} + +define internal void @finch.copy.S_cimport_CStruct(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.cimport.CStruct, ptr %src + store %S.cimport.CStruct %t1, ptr %dst + %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_cimport_CField(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.cimport.CStruct, ptr %dst, i32 0, i32 4 + %t7 = getelementptr inbounds %S.cimport.CStruct, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + +define internal void @finch.gen.resolveCStruct(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca %S.cimport.CStruct, align 16 + %a29 = alloca %S.cimport.CStruct, align 16 + %a31 = alloca %S.cimport.CStruct, align 16 + %a42 = alloca i64, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca i64, align 16 + %a53 = alloca %S.cimport.CField, align 16 + %a60 = alloca %S.ast.Type, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = 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 + %a89 = 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 + %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 + %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 + %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 + %a298 = 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) + unreachable +ok3900: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24 + %t6 = getelementptr inbounds %S.cimport.CImports, ptr %t5, i32 0, i32 3 + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic3901, label %ok3902 +panic3901: + call void @finch_panic(ptr @.str.2424, i64 1607, ptr @.str.2425) + unreachable +ok3902: + %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15 + %t10 = load i64, ptr %a2 + %t11 = load { ptr, i64, i64 }, ptr %t9 + %t12 = extractvalue { ptr, i64, i64 } %t11, 1 + %t13 = icmp uge i64 %t10, %t12 + br i1 %t13, label %range3903, label %inrange3904 +range3903: + call void @finch_panic_index(ptr @.str.2426, i64 1607, i64 %t10, i64 %t12) + unreachable +inrange3904: + %t14 = extractvalue { ptr, i64, i64 } %t11, 0 + %t15 = getelementptr inbounds %S.gen.StructDef, ptr %t14, i64 %t10 + %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i32 0, i32 1 + %t17 = load { ptr, i64, i64 }, ptr %t16 + 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: + 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) + unreachable +map.found3906: + %t23 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 + %t24 = load ptr, ptr %t23 + %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t24, i64 %t19 + %t26 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t25, i32 0, i32 2 + %t27 = load %S.cimport.CStruct, ptr %t26 + store %S.cimport.CStruct %t27, ptr %a28 + call void @finch.copy.S_cimport_CStruct(ptr %a29, ptr %a28) + %t30 = load %S.cimport.CStruct, ptr %a29 + 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) + unreachable +ok3911: + %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15 + %t35 = load i64, ptr %a2 + %t36 = load { ptr, i64, i64 }, ptr %t34 + %t37 = extractvalue { ptr, i64, i64 } %t36, 1 + %t38 = icmp uge i64 %t35, %t37 + br i1 %t38, label %range3912, label %inrange3913 +range3912: + call void @finch_panic_index(ptr @.str.2430, i64 1608, i64 %t35, i64 %t37) + unreachable +inrange3913: + %t39 = extractvalue { ptr, i64, i64 } %t36, 0 + %t40 = getelementptr inbounds %S.gen.StructDef, ptr %t39, i64 %t35 + %t41 = getelementptr inbounds %S.gen.StructDef, ptr %t40, i32 0, i32 15 + store i64 1, ptr %t41 + store i64 0, ptr %a42 + 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: + %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: + %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: + %t56 = load ptr, ptr %a1 + %t57 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 1 + %t58 = load %S.ast.Type, ptr %t57 + %t59 = call %S.ast.Type @finch.gen.resolve(ptr %t56, %S.ast.Type %t58, %S.ast.Node zeroinitializer) + store %S.ast.Type %t59, ptr %a60 + %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 + %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) + %t66 = icmp ne i32 %t65, 0 + br i1 %t66, label %then3921, label %endif3923 +then3921: + %t67 = load ptr, ptr %a1 + %t68 = load ptr, ptr %a1 + %t69 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 3 + %t70 = load { ptr, i64, i64 }, ptr %t69 + %t71 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 2 + %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: + %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: + %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 + %t81 = load i64, ptr %a42 + %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 } %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 + ret void +} + +define internal void @finch.gen.resolveStruct(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = 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 + 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) + unreachable +ok3976: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 + %t6 = load i64, ptr %a2 + %t7 = load { ptr, i64, i64 }, ptr %t5 + %t8 = extractvalue { ptr, i64, i64 } %t7, 1 + %t9 = icmp uge i64 %t6, %t8 + br i1 %t9, label %range3977, label %inrange3978 +range3977: + call void @finch_panic_index(ptr @.str.2472, i64 1643, i64 %t6, i64 %t8) + unreachable +inrange3978: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.gen.StructDef, ptr %t10, i64 %t6 + %t12 = getelementptr inbounds %S.gen.StructDef, ptr %t11, i32 0, i32 15 + %t13 = load i64, ptr %t12 + %t14 = icmp eq i64 %t13, 2 + br i1 %t14, label %then3979, label %endif3981 +then3979: + ret void +endif3981: + %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) + unreachable +ok3983: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 + %t18 = load i64, ptr %a2 + %t19 = load { ptr, i64, i64 }, ptr %t17 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range3984, label %inrange3985 +range3984: + call void @finch_panic_index(ptr @.str.2475, i64 1646, i64 %t18, i64 %t20) + unreachable +inrange3985: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i64 %t18 + %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i32 0, i32 2 + %t25 = load i1, ptr %t24 + br i1 %t25, label %then3986, label %endif3988 +then3986: + %t26 = load ptr, ptr %a1 + %t27 = load i64, ptr %a2 + call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) + ret void +endif3988: + %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) + unreachable +ok3990: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 + %t31 = load i64, ptr %a2 + %t32 = load { ptr, i64, i64 }, ptr %t30 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range3991, label %inrange3992 +range3991: + call void @finch_panic_index(ptr @.str.2478, i64 1650, i64 %t31, i64 %t33) + unreachable +inrange3992: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.gen.StructDef, ptr %t35, i64 %t31 + %t37 = getelementptr inbounds %S.gen.StructDef, ptr %t36, i32 0, i32 5 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 + %t39 = load i64, ptr %t38 + %t40 = icmp eq i64 %t39, 0 + br i1 %t40, label %then3993, label %endif3995 +then3993: + %t41 = load ptr, ptr %a1 + %t42 = load i64, ptr %a2 + call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) + ret void +endif3995: + %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) + unreachable +ok3997: + %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17 + %t46 = load { ptr, i64, i64 }, ptr %t45 + store { ptr, i64, i64 } %t46, ptr %a47 + call void @finch.copy.arr_str(ptr %a48, ptr %a47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + 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) + unreachable +ok3999: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + 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) + unreachable +ok4001: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19 + %t62 = load { ptr, i64, i64 }, ptr %t61 + store { ptr, i64, i64 } %t62, ptr %a63 + call void @finch_str_copy(ptr %a64, ptr %a63) + %t65 = load { ptr, i64, i64 }, ptr %a64 + 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) + unreachable +ok4003: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15 + %t70 = load i64, ptr %a2 + %t71 = load { ptr, i64, i64 }, ptr %t69 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 %t70, %t72 + br i1 %t73, label %range4004, label %inrange4005 +range4004: + call void @finch_panic_index(ptr @.str.2487, i64 1658, i64 %t70, i64 %t72) + unreachable +inrange4005: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.gen.StructDef, ptr %t74, i64 %t70 + %t76 = getelementptr inbounds %S.gen.StructDef, ptr %t75, i32 0, i32 6 + %t77 = load { ptr, i64, i64 }, ptr %t76 + %t78 = load ptr, ptr %a1 + %t79 = icmp eq ptr %t78, null + br i1 %t79, label %panic4006, label %ok4007 +panic4006: + call void @finch_panic(ptr @.str.2488, i64 1658, ptr @.str.2489) + unreachable +ok4007: + %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17 + store { ptr, i64, i64 } %t77, ptr %a81 + call void @finch.copy.arr_str(ptr %a82, ptr %a81) + %t83 = load { ptr, i64, i64 }, ptr %a82 + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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 + %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) + unreachable +ok4023: + %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 + store { ptr, i64, i64 } %t132, ptr %a136 + call void @finch.copy.arr_S_ast_Type(ptr %a137, ptr %a136) + %t138 = load { ptr, i64, i64 }, ptr %a137 + 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) + 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 + ret void +} + +define internal void @finch.gen.resolveStructBody(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a40 = alloca %S.ast.Node, align 16 + %a41 = alloca %S.ast.Node, align 16 + %a43 = alloca %S.ast.Node, 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 + %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 + %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 + %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 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + 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) + unreachable +ok4027: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic4028, label %ok4029 +panic4028: + call void @finch_panic(ptr @.str.2510, i64 1668, ptr @.str.2511) + unreachable +ok4029: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 + %t9 = load i64, ptr %a2 + %t10 = load { ptr, i64, i64 }, ptr %t8 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range4030, label %inrange4031 +range4030: + call void @finch_panic_index(ptr @.str.2512, i64 1668, i64 %t9, i64 %t11) + unreachable +inrange4031: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 + %t15 = getelementptr inbounds %S.gen.StructDef, ptr %t14, i32 0, i32 13 + %t16 = load i64, ptr %t15 + %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) + unreachable +inrange4033: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.ast.Program, ptr %t20, i64 %t16 + %t22 = getelementptr inbounds %S.ast.Program, ptr %t21, i32 0, i32 6 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic4034, label %ok4035 +panic4034: + call void @finch_panic(ptr @.str.2514, i64 1668, ptr @.str.2515) + unreachable +ok4035: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15 + %t26 = load i64, ptr %a2 + %t27 = load { ptr, i64, i64 }, ptr %t25 + %t28 = extractvalue { ptr, i64, i64 } %t27, 1 + %t29 = icmp uge i64 %t26, %t28 + br i1 %t29, label %range4036, label %inrange4037 +range4036: + call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t26, i64 %t28) + unreachable +inrange4037: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds %S.gen.StructDef, ptr %t30, i64 %t26 + %t32 = getelementptr inbounds %S.gen.StructDef, ptr %t31, i32 0, i32 14 + %t33 = load i64, ptr %t32 + %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) + unreachable +inrange4039: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 + %t39 = load %S.ast.Node, ptr %t38 + store %S.ast.Node %t39, ptr %a40 + call void @finch.copy.S_ast_Node(ptr %a41, ptr %a40) + %t42 = load %S.ast.Node, ptr %a41 + store %S.ast.Node %t42, ptr %a43 + %t44 = 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) + unreachable +ok4041: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15 + %t47 = load i64, ptr %a2 + %t48 = load { ptr, i64, i64 }, ptr %t46 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range4042, label %inrange4043 +range4042: + call void @finch_panic_index(ptr @.str.2520, i64 1669, i64 %t47, i64 %t49) + unreachable +inrange4043: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds %S.gen.StructDef, ptr %t51, i64 %t47 + %t53 = getelementptr inbounds %S.gen.StructDef, ptr %t52, i32 0, i32 15 + %t54 = load i64, ptr %t53 + %t55 = icmp eq i64 %t54, 1 + br i1 %t55, label %then4044, label %endif4046 +then4044: + %t56 = load ptr, ptr %a1 + %t57 = load %S.ast.Node, ptr %a43 + %t58 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t59 = load { ptr, i64, i64 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.2521, i64 11, i64 0 }, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.2522, i64 26, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + %t68 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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 + 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 + ret void +} + +define internal i64 @finch.gen.md(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = 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 %panic4105, label %ok4106 +panic4105: + call void @finch_panic(ptr @.str.2569, i64 1702, ptr @.str.2570) + unreachable +ok4106: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t7, ptr %a8 + call void @finch_str_copy(ptr %a9, ptr %a8) + %t10 = load { ptr, i64, i64 }, ptr %a9 + %t11 = load i64, ptr %t6 + %t12 = add i64 %t11, 1 + call void @finch_arr_reserve(ptr %t5, i64 %t12, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t13 = load ptr, ptr %t5 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 %t11 + store { ptr, i64, i64 } %t10, ptr %t14 + 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) + unreachable +ok4108: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 31 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load i64, ptr %t18 + %t20 = sub i64 %t19, 1 + ret i64 %t20 +} + +define internal { ptr, i64, i64 } @finch.gen.mdRef(i64 %p0) { +entry: + %a1 = alloca 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 + 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: + %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 } %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 +} + +define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca i64, align 16 + store i64 %p0, ptr %a1 + store i64 %p1, ptr %a2 + %t3 = load i64, ptr %a2 + %t4 = icmp sle i64 %t3, 1 + br i1 %t4, label %then4112, label %endif4114 +then4112: + %t5 = load i64, ptr %a1 + ret i64 %t5 +endif4114: + %t6 = load i64, ptr %a1 + %t7 = load i64, ptr %a2 + %t8 = add i64 %t6, %t7 + %t9 = sub i64 %t8, 1 + %t10 = load i64, ptr %a2 + %t11 = icmp eq i64 %t10, 0 + br i1 %t11, label %panic4115, label %ok4116 +panic4115: + call void @finch_panic(ptr @.str.2575, i64 1722, ptr @.str.2576) + unreachable +ok4116: + %t12 = sdiv i64 %t9, %t10 + %t13 = load i64, ptr %a2 + %t14 = mul i64 %t12, %t13 + ret i64 %t14 +} + +define internal %S.gen.SizeAlign @finch.gen.sizeAlign(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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = 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 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a73 = 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 + %a86 = 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 + %a106 = alloca %S.gen.SizeAlign, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca %S.gen.StructDef, align 16 + %a137 = alloca %S.gen.StructDef, align 16 + %a139 = alloca %S.gen.StructDef, align 16 + %a148 = alloca i64, align 16 + %a149 = alloca i64, align 16 + %a151 = alloca i64, align 16 + %a159 = alloca %S.ast.Type, align 16 + %a163 = alloca %S.gen.SizeAlign, 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 + %t4 = load { ptr, i64, i64 }, ptr %t3 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.2577, i64 4, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br label %logic.from4117 +logic.from4117: + br i1 %t13, label %logic.end4119, label %logic.rhs4118 +logic.rhs4118: + %t14 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.2578, i64 4, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br label %logic.rend4120 +logic.rend4120: + br label %logic.end4119 +logic.end4119: + %t19 = phi i1 [ true, %logic.from4117 ], [ %t18, %logic.rend4120 ] + br label %logic.from4121 +logic.from4121: + br i1 %t19, label %logic.end4123, label %logic.rhs4122 +logic.rhs4122: + %t20 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2579, i64 2, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br label %logic.rend4124 +logic.rend4124: + br label %logic.end4123 +logic.end4123: + %t25 = phi i1 [ true, %logic.from4121 ], [ %t24, %logic.rend4124 ] + br label %logic.from4125 +logic.from4125: + br i1 %t25, label %logic.end4127, label %logic.rhs4126 +logic.rhs4126: + %t26 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.2580, i64 2, i64 0 }, ptr %a28 + %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) + %t30 = icmp ne i32 %t29, 0 + br label %logic.rend4128 +logic.rend4128: + br label %logic.end4127 +logic.end4127: + %t31 = phi i1 [ true, %logic.from4125 ], [ %t30, %logic.rend4128 ] + br i1 %t31, label %then4129, label %endif4131 +then4129: + %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 + %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 + ret %S.gen.SizeAlign %t33 +endif4131: + %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 + %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: + %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 + %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: + %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 + %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 + ret %S.gen.SizeAlign %t46 +endif4138: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 + %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 + ret %S.gen.SizeAlign %t71 +endif4153: + %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 + %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: + %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 + %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: + %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 + %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 + ret %S.gen.SizeAlign %t84 +endif4160: + %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 + %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) + %t89 = icmp ne i32 %t88, 0 + br i1 %t89, label %then4161, label %endif4163 +then4161: + %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 + %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 + ret %S.gen.SizeAlign %t91 +endif4163: + %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 + %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) + %t96 = icmp ne i32 %t95, 0 + br i1 %t96, label %then4164, label %endif4166 +then4164: + %t97 = load ptr, ptr %a1 + %t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t99 = load { ptr, i64, i64 }, ptr %t98 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 0, %t100 + br i1 %t101, label %range4167, label %inrange4168 +range4167: + call void @finch_panic_index(ptr @.str.2591, i64 1744, i64 0, i64 %t100) + unreachable +inrange4168: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 + %t104 = load %S.ast.Type, ptr %t103 + %t105 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t97, %S.ast.Type %t104) + store %S.gen.SizeAlign %t105, ptr %a106 + %t107 = getelementptr inbounds %S.gen.SizeAlign, ptr %a106, i32 0, i32 0 + %t108 = load i64, ptr %t107 + %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t110 = load i64, ptr %t109 + %t111 = mul i64 %t108, %t110 + %t112 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t111, 0 + %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 + ret %S.gen.SizeAlign %t115 +endif4166: + %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 + %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) + %t120 = icmp ne i32 %t119, 0 + br i1 %t120, label %then4169, label %endif4171 +then4169: + %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) + unreachable +ok4173: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15 + %t124 = load ptr, ptr %a1 + %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t126 = load { ptr, i64, i64 }, ptr %t125 + %t127 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t128 = load { ptr, i64, i64 }, ptr %t127 + %t129 = call i64 @finch.gen.findStruct(ptr %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t128) + %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) + unreachable +inrange4175: + %t133 = extractvalue { ptr, i64, i64 } %t130, 0 + %t134 = getelementptr inbounds %S.gen.StructDef, ptr %t133, i64 %t129 + %t135 = load %S.gen.StructDef, ptr %t134 + store %S.gen.StructDef %t135, ptr %a136 + call void @finch.copy.S_gen_StructDef(ptr %a137, ptr %a136) + %t138 = load %S.gen.StructDef, ptr %a137 + 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: + %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 + ret %S.gen.SizeAlign %t147 +endif4178: + store i64 0, ptr %a148 + store i64 1, ptr %a149 + %t150 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 12 + store i64 0, ptr %a151 + br label %each.cond4179 +each.cond4179: + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 + %t153 = load i64, ptr %t152 + %t154 = load i64, ptr %a151 + %t155 = icmp slt i64 %t154, %t153 + br i1 %t155, label %each.body4180, label %each.end4182 +each.body4180: + %t156 = load ptr, ptr %t150 + %t157 = getelementptr inbounds %S.ast.Type, ptr %t156, i64 %t154 + %t158 = load %S.ast.Type, ptr %t157 + store %S.ast.Type %t158, ptr %a159 + %t160 = load ptr, ptr %a1 + %t161 = load %S.ast.Type, ptr %a159 + %t162 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t160, %S.ast.Type %t161) + store %S.gen.SizeAlign %t162, ptr %a163 + %t164 = load i64, ptr %a148 + %t165 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 + %t166 = load i64, ptr %t165 + %t167 = call i64 @finch.gen.alignUp(i64 %t164, i64 %t166) + %t168 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 0 + %t169 = load i64, ptr %t168 + %t170 = add i64 %t167, %t169 + store i64 %t170, ptr %a148 + %t171 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 + %t172 = load i64, ptr %t171 + %t173 = load i64, ptr %a149 + %t174 = icmp sgt i64 %t172, %t173 + br i1 %t174, label %then4183, label %endif4185 +then4183: + %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 + %t176 = load i64, ptr %t175 + store i64 %t176, ptr %a149 + br label %endif4185 +endif4185: + br label %each.step4181 +each.step4181: + %t177 = load i64, ptr %a151 + %t178 = add i64 %t177, 1 + store i64 %t178, ptr %a151 + br label %each.cond4179 +each.end4182: + %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 + ret %S.gen.SizeAlign %t184 +endif4171: + %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 + %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 + ret %S.gen.SizeAlign %t186 +} + +define internal { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %p0, %S.gen.StructDef %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.StructDef, 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 i64, align 16 + %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: + %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: + 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: + %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: + %t18 = load ptr, ptr %t12 + %t19 = getelementptr inbounds %S.ast.Type, ptr %t18, i64 %t16 + %t20 = load %S.ast.Type, ptr %t19 + store %S.ast.Type %t20, ptr %a21 + %t22 = load ptr, ptr %a1 + %t23 = load %S.ast.Type, ptr %a21 + %t24 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t22, %S.ast.Type %t23) + store %S.gen.SizeAlign %t24, ptr %a25 + %t26 = load i64, ptr %a11 + %t27 = getelementptr inbounds %S.gen.SizeAlign, ptr %a25, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = call i64 @finch.gen.alignUp(i64 %t26, i64 %t28) + store i64 %t29, ptr %a11 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 + %t31 = load i64, ptr %a11 + %t32 = load i64, ptr %t30 + %t33 = add i64 %t32, 1 + call void @finch_arr_reserve(ptr %a10, i64 %t33, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t34 = load ptr, ptr %a10 + %t35 = getelementptr inbounds i64, ptr %t34, i64 %t32 + store i64 %t31, ptr %t35 + store i64 %t33, ptr %t30 + %t36 = getelementptr inbounds %S.gen.SizeAlign, ptr %a25, i32 0, i32 0 + %t37 = load i64, ptr %t36 + %t38 = load i64, ptr %a11 + %t39 = add i64 %t38, %t37 + store i64 %t39, ptr %a11 + br label %each.step4191 +each.step4191: + %t40 = load i64, ptr %a13 + %t41 = add i64 %t40, 1 + store i64 %t41, ptr %a13 + br label %each.cond4189 +each.end4192: + %t42 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch.copy.arr_int(ptr %a44, ptr %a43) + %t45 = load { ptr, i64, i64 }, ptr %a44 + ret { ptr, i64, i64 } %t45 +} + +define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a6 = alloca i64, align 16 + %a7 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %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 + %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 + %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 + %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 + %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 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = 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 + %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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + store i64 %p5, ptr %a6 + store i64 %p6, ptr %a7 + 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 } %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 + 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 + 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 +} + +define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = 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 + %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 + %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 + %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 + 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 } %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 + 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 + 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 +} + +define internal i64 @finch.gen.diType(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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %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 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca i64, align 16 + %a58 = alloca i64, align 16 + %a60 = 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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = 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 + %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 + %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 + %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 + %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 + %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 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a344 = 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 + %a367 = alloca %S.ast.Type, 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 + %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 + %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 + %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 + %a461 = 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 + %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 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca i64, align 16 + %a513 = alloca 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 + %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 + %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 + %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 + %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 + %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 + %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 + %a764 = alloca { ptr, i64, i64 }, align 16 + %a765 = 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 + %t4 = load { ptr, i64, i64 }, ptr %t3 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.2608, i64 4, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br label %logic.from4193 +logic.from4193: + br i1 %t13, label %logic.end4195, label %logic.rhs4194 +logic.rhs4194: + %t14 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.2609, i64 4, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br label %logic.rend4196 +logic.rend4196: + br label %logic.end4195 +logic.end4195: + %t19 = phi i1 [ true, %logic.from4193 ], [ %t18, %logic.rend4196 ] + br i1 %t19, label %then4197, label %endif4199 +then4197: + ret i64 -1 +endif4199: + %t20 = load %S.ast.Type, ptr %a2 + %t21 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t20) + store { ptr, i64, i64 } { ptr @.str.2610, i64 2, i64 0 }, ptr %a23 + store { ptr, i64, i64 } %t21, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t25, ptr %a26 + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic4200, label %ok4201 +panic4200: + call void @finch_panic(ptr @.str.2611, i64 1797, ptr @.str.2612) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 +} + +define internal i64 @finch.gen.dbgLocation(ptr %p0) { +entry: + %a1 = alloca ptr, 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 + %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 + %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 + %a45 = 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 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = 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) + unreachable +ok4344: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 35 + %t5 = load i64, ptr %t4 + call void @finch_str_from_int(ptr %a6, i64 %t5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.2737, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } %t7, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t11, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.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) + 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) + 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: + %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) + unreachable +ok4355: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 32 + %t51 = load { ptr, i64, i64 }, ptr %a40 + store { ptr, i64, i64 } %t51, ptr %a52 + %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t54 = icmp slt i64 %t53, 0 + br i1 %t54, label %map.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) + 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) + 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) + 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) + 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) + 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 +} + +define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a7 = alloca %S.gen.FnSig, align 16 + %a8 = alloca %S.gen.FnSig, align 16 + %a10 = alloca %S.gen.FnSig, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca i64, align 16 + %a40 = alloca %S.ast.Type, align 16 + %a63 = alloca 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 + %a73 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = 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) + unreachable +ok4369: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12 + %t6 = load %S.gen.FnSig, ptr %t5 + store %S.gen.FnSig %t6, ptr %a7 + call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) + %t9 = load %S.gen.FnSig, ptr %a8 + store %S.gen.FnSig %t9, ptr %a10 + store { ptr, i64, i64 } zeroinitializer, ptr %a11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t13 = load ptr, ptr %a1 + %t14 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 12 + %t15 = load %S.ast.Type, ptr %t14 + %t16 = call i64 @finch.gen.diType(ptr %t13, %S.ast.Type %t15) + %t17 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t16) + %t18 = load i64, ptr %t12 + %t19 = add i64 %t18, 1 + call void @finch_arr_reserve(ptr %a11, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t20 = load ptr, ptr %a11 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + store { ptr, i64, i64 } %t17, ptr %t21 + store i64 %t19, ptr %t12 + %t22 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 2 + %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: + %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 i64 %t28, ptr %t26 + br label %endif4372 +endif4372: + %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 + store i64 0, ptr %a32 + br label %each.cond4373 +each.cond4373: + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 + %t34 = load i64, ptr %t33 + %t35 = load i64, ptr %a32 + %t36 = icmp slt i64 %t35, %t34 + br i1 %t36, label %each.body4374, label %each.end4376 +each.body4374: + %t37 = load ptr, ptr %t31 + %t38 = getelementptr inbounds %S.ast.Type, ptr %t37, i64 %t35 + %t39 = load %S.ast.Type, ptr %t38 + store %S.ast.Type %t39, ptr %a40 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t42 = load ptr, ptr %a1 + %t43 = load %S.ast.Type, ptr %a40 + %t44 = call i64 @finch.gen.diType(ptr %t42, %S.ast.Type %t43) + %t45 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t44) + %t46 = load i64, ptr %t41 + %t47 = add i64 %t46, 1 + call void @finch_arr_reserve(ptr %a11, i64 %t47, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t48 = load ptr, ptr %a11 + %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: + %t50 = load i64, ptr %a32 + %t51 = add i64 %t50, 1 + store i64 %t51, ptr %a32 + br label %each.cond4373 +each.end4376: + %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) + unreachable +ok4378: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 33 + %t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t56 = load i64, ptr %t55 + %t57 = load { ptr, i64, i64 }, ptr %t54 + %t58 = extractvalue { ptr, i64, i64 } %t57, 1 + %t59 = icmp uge i64 %t56, %t58 + br i1 %t59, label %range4379, label %inrange4380 +range4379: + call void @finch_panic_index(ptr @.str.2768, i64 1902, i64 %t56, i64 %t58) + unreachable +inrange4380: + %t60 = extractvalue { ptr, i64, i64 } %t57, 0 + %t61 = getelementptr inbounds i64, ptr %t60, i64 %t56 + %t62 = load i64, ptr %t61 + store i64 %t62, ptr %a63 + %t64 = load ptr, ptr %a1 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.2770, i64 2, i64 0 }, ptr %a66 + call void @finch_str_join(ptr %a67, ptr %a11, ptr %a66) + %t68 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } { ptr @.str.2769, i64 27, i64 0 }, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + store { ptr, i64, i64 } %t72, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.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 + %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 + 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 } %t135, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.2778, i64 9, i64 0 }, ptr %a138 + call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) + %t139 = load { ptr, i64, i64 }, ptr %a136 + %t140 = load i64, ptr %a78 + 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 + 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 +} + +define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a23 = 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 + %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 + %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 + %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 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = 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 + %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 + %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 + %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 + %a113 = alloca 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 + 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 + %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) + unreachable +ok4382: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 28 + %t9 = load i1, ptr %t8 + %t10 = xor i1 %t9, true + br label %logic.from4383 +logic.from4383: + br i1 %t10, label %logic.end4385, label %logic.rhs4384 +logic.rhs4384: + %t11 = load ptr, ptr %a1 + %t12 = icmp eq ptr %t11, null + br i1 %t12, label %panic4386, label %ok4387 +panic4386: + call void @finch_panic(ptr @.str.2783, i64 1908, ptr @.str.2784) + unreachable +ok4387: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 34 + %t14 = load i64, ptr %t13 + %t15 = icmp slt i64 %t14, 0 + br label %logic.rend4388 +logic.rend4388: + br label %logic.end4385 +logic.end4385: + %t16 = phi i1 [ true, %logic.from4383 ], [ %t15, %logic.rend4388 ] + br i1 %t16, label %then4389, label %endif4391 +then4389: + ret void +endif4391: + %t17 = load ptr, ptr %a1 + %t18 = load %S.ast.Type, ptr %a4 + %t19 = call i64 @finch.gen.diType(ptr %t17, %S.ast.Type %t18) + store i64 %t19, ptr %a20 + %t21 = load i64, ptr %a20 + %t22 = icmp slt i64 %t21, 0 + br i1 %t22, label %then4392, label %endif4394 +then4392: + ret void +endif4394: + store { ptr, i64, i64 } { ptr @.str.2785, i64 0, i64 0 }, ptr %a23 + %t24 = load ptr, ptr %a1 + %t25 = icmp eq ptr %t24, null + br i1 %t25, label %panic4395, label %ok4396 +panic4395: + call void @finch_panic(ptr @.str.2786, i64 1916, ptr @.str.2787) + unreachable +ok4396: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 37 + %t27 = load i64, ptr %t26 + %t28 = icmp sgt i64 %t27, 0 + br i1 %t28, label %then4397, label %endif4399 +then4397: + %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) + unreachable +ok4401: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 37 + %t32 = load i64, ptr %t31 + call void @finch_str_from_int(ptr %a33, i64 %t32) + %t34 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.2788, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t38, ptr %a23 + br label %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) + 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 + 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) + 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) + 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 + 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) + 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) + 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) + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.dbgModule(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca 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 + %a26 = 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 + %a42 = 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 + 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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.2810, i64 30, i64 0 }, ptr %t5 + %t6 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t7 = insertvalue { ptr, i64, i64 } %t6, i64 2, 1 + %t8 = insertvalue { ptr, i64, i64 } %t7, i64 2, 2 + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic4412, label %ok4413 +panic4412: + call void @finch_panic(ptr @.str.2811, i64 1928, ptr @.str.2812) + unreachable +ok4413: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 31 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + store i64 0, ptr %a15 + br label %for.cond4414 +for.cond4414: + %t16 = load i64, ptr %a15 + %t17 = icmp slt i64 %t16, %t14 + br i1 %t17, label %for.body4415, label %for.end4417 +for.body4415: + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t19 = load i64, ptr %a15 + call void @finch_str_from_int(ptr %a20, i64 %t19) + %t21 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.2813, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } %t21, ptr %a24 + call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) + %t25 = load { ptr, i64, i64 }, ptr %a22 + store { ptr, i64, i64 } %t25, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.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) + 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) + 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 +} + +define internal void @finch.copy.arr_S_gen_Scope(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.Scope, 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.cond4490 +n.cond4490: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body4491, label %n.end4492 +n.body4491: + %t8 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.gen.Scope, ptr %t2, i64 %t6 + call void @finch.copy.S_gen_Scope(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond4490 +n.end4492: + ret void +} + +define internal void @finch.gen.define(ptr %p0, i64 %p1) { +entry: + %a1 = alloca ptr, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = 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 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = 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 + %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 + %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 + %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 + %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 + 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) + unreachable +ok4423: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14 + %t6 = load i64, ptr %a2 + %t7 = load { ptr, i64, i64 }, ptr %t5 + %t8 = extractvalue { ptr, i64, i64 } %t7, 1 + %t9 = icmp uge i64 %t6, %t8 + br i1 %t9, label %range4424, label %inrange4425 +range4424: + call void @finch_panic_index(ptr @.str.2822, i64 1935, i64 %t6, i64 %t8) + unreachable +inrange4425: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.gen.FnSig, ptr %t10, i64 %t6 + %t12 = load %S.gen.FnSig, ptr %t11 + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic4426, label %ok4427 +panic4426: + call void @finch_panic(ptr @.str.2823, i64 1935, ptr @.str.2824) + unreachable +ok4427: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12 + store %S.gen.FnSig %t12, ptr %a16 + call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) + %t18 = load %S.gen.FnSig, ptr %a17 + 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) + 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) + 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) + 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) + 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) + 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 + %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) + unreachable +ok4441: + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + %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) + 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 + %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) + 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: + %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) + 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 + %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) + unreachable +ok4481: + %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 35 + store i64 %t147, ptr %t150 + %t151 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 12 + %t152 = load i64, ptr %t151 + %t153 = load ptr, ptr %a1 + %t154 = icmp eq ptr %t153, null + br i1 %t154, label %panic4482, label %ok4483 +panic4482: + call void @finch_panic(ptr @.str.2874, i64 1956, ptr @.str.2875) + unreachable +ok4483: + %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 36 + store i64 %t152, ptr %t155 + br label %endif4477 +endif4477: + %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) + 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) + 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 + %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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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 + %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) + 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) + unreachable +ok4579: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 34 + store i64 -1, ptr %t442 + %t443 = load ptr, ptr %a1 + %t444 = icmp eq ptr %t443, null + br i1 %t444, label %panic4580, label %ok4581 +panic4580: + call void @finch_panic(ptr @.str.2945, i64 2009, ptr @.str.2946) + 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) + 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) + 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 + 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) + 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) + 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 + ret void +} + +define internal void @finch.gen.block(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a7 = alloca i64, align 16 + %a15 = alloca %S.ast.Node, align 16 + store ptr %p0, ptr %a1 + 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: + %t5 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t5) + br label %endif4592 +endif4592: + %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + store i64 0, ptr %a7 + br label %each.cond4593 +each.cond4593: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load i64, ptr %a7 + %t11 = icmp slt i64 %t10, %t9 + br i1 %t11, label %each.body4594, label %each.end4596 +each.body4594: + %t12 = load ptr, ptr %t6 + %t13 = getelementptr inbounds %S.ast.Node, ptr %t12, i64 %t10 + %t14 = load %S.ast.Node, ptr %t13 + store %S.ast.Node %t14, ptr %a15 + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic4597, label %ok4598 +panic4597: + call void @finch_panic(ptr @.str.2965, i64 2020, ptr @.str.2966) + unreachable +ok4598: + %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: + %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: + %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: + %t24 = load i64, ptr %a7 + %t25 = add i64 %t24, 1 + store i64 %t25, ptr %a7 + br label %each.cond4593 +each.end4596: + %t26 = load i1, ptr %a3 + br i1 %t26, label %then4602, label %endif4604 +then4602: + %t27 = load ptr, ptr %a1 + call void @finch.gen.endScope(ptr %t27) + br label %endif4604 +endif4604: + ret void +} + +define internal void @finch.copy.S_gen_Loop(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Loop, ptr %src + store %S.gen.Loop %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Loop, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Loop, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Loop, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Loop, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = 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 + %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 + %a41 = alloca { ptr, i64, i64 }, align 16 + %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 + 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) + unreachable +ok4606: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 35 + store i64 %t4, ptr %t7 + %t8 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t9 = load i64, ptr %t8 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic4607, label %ok4608 +panic4607: + call void @finch_panic(ptr @.str.2970, i64 2032, ptr @.str.2971) + unreachable +ok4608: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 36 + store i64 %t9, ptr %t12 + %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_copy(ptr %a16, ptr %a15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + 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 + %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) + %t23 = icmp ne i32 %t22, 0 + br i1 %t23, label %then4609, label %else4610 +then4609: + %t24 = load ptr, ptr %a1 + %t25 = load %S.ast.Node, ptr %a2 + call void @finch.gen.block(ptr %t24, %S.ast.Node %t25, i1 true) + br label %endif4611 +else4610: + %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 + %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) + %t30 = icmp ne i32 %t29, 0 + br i1 %t30, label %then4612, label %else4613 +then4612: + %t31 = load ptr, ptr %a1 + %t32 = load %S.ast.Node, ptr %a2 + call void @finch.gen.declStmt(ptr %t31, %S.ast.Node %t32) + br label %endif4614 +else4613: + %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 + %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) + %t37 = icmp ne i32 %t36, 0 + br i1 %t37, label %then4615, label %else4616 +then4615: + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Node, ptr %a2 + call void @finch.gen.assignStmt(ptr %t38, %S.ast.Node %t39) + br label %endif4617 +else4616: + %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 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br i1 %t44, label %then4618, label %else4619 +then4618: + %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 0, %t47 + br i1 %t48, label %range4621, label %inrange4622 +range4621: + call void @finch_panic_index(ptr @.str.2976, i64 2041, i64 0, i64 %t47) + unreachable +inrange4622: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 0 + %t51 = getelementptr inbounds %S.ast.Node, ptr %t50, i32 0, i32 0 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.2977, i64 2, i64 0 }, ptr %a54 + %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) + %t56 = icmp ne i32 %t55, 0 + br i1 %t56, label %then4623, label %else4624 +then4623: + %t57 = load ptr, ptr %a1 + %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t59 = load { ptr, i64, i64 }, ptr %t58 + %t60 = extractvalue { ptr, i64, i64 } %t59, 1 + %t61 = icmp uge i64 0, %t60 + br i1 %t61, label %range4626, label %inrange4627 +range4626: + call void @finch_panic_index(ptr @.str.2978, i64 2042, i64 0, i64 %t60) + 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) + 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: + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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: + ret void +} + +define internal void @finch.gen.declStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a15 = alloca %S.gen.Val, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %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 + 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: + %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) + unreachable +inrange4700: + %t11 = extractvalue { ptr, i64, i64 } %t8, 0 + %t12 = getelementptr inbounds %S.ast.Node, ptr %t11, i64 0 + %t13 = load %S.ast.Node, ptr %t12 + %t14 = call %S.gen.Val @finch.gen.expr(ptr %t6, %S.ast.Node %t13) + store %S.gen.Val %t14, ptr %a15 + %t16 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 + %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 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br i1 %t22, label %then4701, label %endif4703 +then4701: + %t23 = load ptr, ptr %a1 + %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t25 = load { ptr, i64, i64 }, ptr %t24 + %t26 = extractvalue { ptr, i64, i64 } %t25, 1 + %t27 = icmp uge i64 0, %t26 + br i1 %t27, label %range4704, label %inrange4705 +range4704: + call void @finch_panic_index(ptr @.str.3018, i64 2088, i64 0, i64 %t26) + unreachable +inrange4705: + %t28 = extractvalue { ptr, i64, i64 } %t25, 0 + %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 + %t30 = load %S.ast.Node, ptr %t29 + call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.3019, i64 46, i64 0 }) + br label %endif4703 +endif4703: + %t31 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 + %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i32 0, i32 0 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.3020, i64 4, i64 0 }, ptr %a35 + %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) + %t37 = icmp ne i32 %t36, 0 + br i1 %t37, label %then4706, label %endif4708 +then4706: + %t38 = load ptr, ptr %a1 + %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t40 = load { ptr, i64, i64 }, ptr %t39 + %t41 = extractvalue { ptr, i64, i64 } %t40, 1 + %t42 = icmp uge i64 0, %t41 + br i1 %t42, label %range4709, label %inrange4710 +range4709: + call void @finch_panic_index(ptr @.str.3021, i64 2091, i64 0, i64 %t41) + unreachable +inrange4710: + %t43 = extractvalue { ptr, i64, i64 } %t40, 0 + %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 0 + %t45 = load %S.ast.Node, ptr %t44 + %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t47 = load { ptr, i64, i64 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.3022, i64 34, i64 0 }, ptr %a49 + store { ptr, i64, i64 } %t47, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.3023, i64 7, i64 0 }, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t55) + br label %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) + 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 + %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) + 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) + 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) + 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 + %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) + ret void +} + +define internal i1 @finch.gen.hasDefaults(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a18 = alloca %S.gen.StructDef, align 16 + %a19 = alloca %S.gen.StructDef, align 16 + %a21 = alloca %S.gen.StructDef, align 16 + %a43 = alloca i64, align 16 + %a51 = alloca %S.ast.Node, align 16 + store ptr %p0, ptr %a1 + 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) + unreachable +ok4726: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 + %t6 = load ptr, ptr %a1 + %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t8 = load { ptr, i64, i64 }, ptr %t7 + %t9 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t10 = load { ptr, i64, i64 }, ptr %t9 + %t11 = call i64 @finch.gen.findStruct(ptr %t6, { ptr, i64, i64 } %t8, { 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 %range4727, label %inrange4728 +range4727: + call void @finch_panic_index(ptr @.str.3031, i64 2113, i64 %t11, i64 %t13) + unreachable +inrange4728: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i64 %t11 + %t17 = load %S.gen.StructDef, ptr %t16 + store %S.gen.StructDef %t17, ptr %a18 + call void @finch.copy.S_gen_StructDef(ptr %a19, ptr %a18) + %t20 = load %S.gen.StructDef, ptr %a19 + 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: + ret i1 false +endif4731: + %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) + unreachable +ok4733: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0 + %t27 = getelementptr inbounds %S.gen.StructDef, ptr %a21, i32 0, i32 13 + %t28 = load i64, ptr %t27 + %t29 = load { ptr, i64, i64 }, ptr %t26 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range4734, label %inrange4735 +range4734: + call void @finch_panic_index(ptr @.str.3034, i64 2117, i64 %t28, i64 %t30) + unreachable +inrange4735: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds %S.ast.Program, ptr %t32, i64 %t28 + %t34 = getelementptr inbounds %S.ast.Program, ptr %t33, i32 0, i32 6 + %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a21, i32 0, i32 14 + %t36 = load i64, ptr %t35 + %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) + unreachable +inrange4737: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 + %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i32 0, i32 9 + store i64 0, ptr %a43 + br label %each.cond4738 +each.cond4738: + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = load i64, ptr %a43 + %t47 = icmp slt i64 %t46, %t45 + br i1 %t47, label %each.body4739, label %each.end4741 +each.body4739: + %t48 = load ptr, ptr %t42 + %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 + %t50 = load %S.ast.Node, ptr %t49 + store %S.ast.Node %t50, ptr %a51 + %t52 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 9 + %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: + ret i1 true +endif4744: + br label %each.step4740 +each.step4740: + %t56 = load i64, ptr %a43 + %t57 = add i64 %t56, 1 + store i64 %t57, ptr %a43 + br label %each.cond4738 +each.end4741: + ret i1 false +} + +define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a10 = alloca %S.ast.Node, align 16 + %a11 = alloca %S.ast.Node, align 16 + %a13 = alloca %S.ast.Node, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca i64, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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 + %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 + %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 + %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 + %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 + %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 + 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) + unreachable +inrange4746: + %t7 = extractvalue { ptr, i64, i64 } %t4, 0 + %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 + %t9 = load %S.ast.Node, ptr %t8 + store %S.ast.Node %t9, ptr %a10 + call void @finch.copy.S_ast_Node(ptr %a11, ptr %a10) + %t12 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t12, ptr %a13 + %t14 = load %S.ast.Node, ptr %a13 + %t15 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t14) + store { ptr, i64, i64 } %t15, ptr %a16 + %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: + %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: + %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 + %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: + %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 } %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 + 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 } %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: + %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) + unreachable +inrange4775: + %t135 = extractvalue { ptr, i64, i64 } %t132, 0 + %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 + %t137 = load %S.ast.Node, ptr %t136 + %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 + %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) + %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) + ret void +} + +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 + 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 }) + %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 +} + +define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca i1, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange4777: + %t8 = extractvalue { ptr, i64, i64 } %t5, 0 + %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 + %t10 = load %S.ast.Node, ptr %t9 + %t11 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t3, %S.ast.Node %t10) + store { ptr, i64, i64 } %t11, ptr %a12 + %t13 = load ptr, ptr %a1 + %t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.3055, i64 4, i64 0 }) + store { ptr, i64, i64 } %t14, ptr %a15 + %t16 = load ptr, ptr %a1 + %t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.3056, i64 4, i64 0 }) + store { ptr, i64, i64 } %t17, ptr %a18 + %t19 = load ptr, ptr %a1 + %t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.3057, i64 5, i64 0 }) + store { ptr, i64, i64 } %t20, ptr %a21 + %t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = icmp sgt i64 %t24, 2 + br i1 %t25, label %then4778, label %else4779 +then4778: + %t26 = load ptr, ptr %a1 + %t27 = load { ptr, i64, i64 }, ptr %a12 + %t28 = load { ptr, i64, i64 }, ptr %a15 + %t29 = load { ptr, i64, i64 }, ptr %a18 + call void @finch.gen.condBr(ptr %t26, { ptr, i64, i64 } %t27, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t29) + br label %endif4780 +else4779: + %t30 = load ptr, ptr %a1 + %t31 = load { ptr, i64, i64 }, ptr %a12 + %t32 = load { ptr, i64, i64 }, ptr %a15 + %t33 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.gen.condBr(ptr %t30, { ptr, i64, i64 } %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33) + br label %endif4780 +endif4780: + %t34 = load ptr, ptr %a1 + %t35 = load { ptr, i64, i64 }, ptr %a15 + call void @finch.gen.label(ptr %t34, { ptr, i64, i64 } %t35) + %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 1, %t39 + br i1 %t40, label %range4781, label %inrange4782 +range4781: + call void @finch_panic_index(ptr @.str.3058, i64 2171, i64 1, i64 %t39) + unreachable +inrange4782: + %t41 = extractvalue { ptr, i64, i64 } %t38, 0 + %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 1 + %t43 = load %S.ast.Node, ptr %t42 + call void @finch.gen.block(ptr %t36, %S.ast.Node %t43, i1 true) + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic4783, label %ok4784 +panic4783: + call void @finch_panic(ptr @.str.3059, i64 2172, ptr @.str.3060) + unreachable +ok4784: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 9 + %t47 = load i1, ptr %t46 + %t48 = xor i1 %t47, true + store i1 %t48, ptr %a49 + %t50 = load ptr, ptr %a1 + %t51 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.gen.br(ptr %t50, { ptr, i64, i64 } %t51) + %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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: + %t56 = load ptr, ptr %a1 + %t57 = load { ptr, i64, i64 }, ptr %a18 + call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) + %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 2, %t61 + br i1 %t62, label %range4788, label %inrange4789 +range4788: + call void @finch_panic_index(ptr @.str.3061, i64 2176, i64 2, i64 %t61) + unreachable +inrange4789: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 2 + %t65 = load %S.ast.Node, ptr %t64 + call void @finch.gen.stmt(ptr %t58, %S.ast.Node %t65) + %t66 = load i1, ptr %a49 + br label %logic.from4790 +logic.from4790: + br i1 %t66, label %logic.end4792, label %logic.rhs4791 +logic.rhs4791: + %t67 = load ptr, ptr %a1 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic4793, label %ok4794 +panic4793: + call void @finch_panic(ptr @.str.3062, i64 2177, ptr @.str.3063) + unreachable +ok4794: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 + %t70 = load i1, ptr %t69 + %t71 = xor i1 %t70, true + br label %logic.rend4795 +logic.rend4795: + br label %logic.end4792 +logic.end4792: + %t72 = phi i1 [ true, %logic.from4790 ], [ %t71, %logic.rend4795 ] + store i1 %t72, ptr %a49 + %t73 = load ptr, ptr %a1 + %t74 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.gen.br(ptr %t73, { ptr, i64, i64 } %t74) + br label %endif4787 +else4786: + store i1 true, ptr %a49 + br label %endif4787 +endif4787: + %t75 = load i1, ptr %a49 + br i1 %t75, label %then4796, label %endif4798 +then4796: + %t76 = load ptr, ptr %a1 + %t77 = load { ptr, i64, i64 }, ptr %a21 + call void @finch.gen.label(ptr %t76, { ptr, i64, i64 } %t77) + br label %endif4798 +endif4798: + ret void +} + +define internal void @finch.gen.whileStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca i1, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a66 = 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 + %a93 = alloca i1, 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 }) + 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 }) + 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 }) + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load ptr, ptr %a1 + %t13 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.br(ptr %t12, { ptr, i64, i64 } %t13) + %t14 = load ptr, ptr %a1 + %t15 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.label(ptr %t14, { ptr, i64, i64 } %t15) + %t16 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange4800: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.ast.Node, ptr %t20, i64 0 + %t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3068, i64 4, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br label %logic.from4801 +logic.from4801: + br i1 %t27, label %logic.rhs4802, label %logic.end4803 +logic.rhs4802: + %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t29 = load { ptr, i64, i64 }, ptr %t28 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 0, %t30 + br i1 %t31, label %range4804, label %inrange4805 +range4804: + call void @finch_panic_index(ptr @.str.3069, i64 2193, i64 0, i64 %t30) + unreachable +inrange4805: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i64 0 + %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i32 0, i32 4 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.3070, i64 4, i64 0 }, ptr %a37 + %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) + %t39 = icmp ne i32 %t38, 0 + br label %logic.rend4806 +logic.rend4806: + br label %logic.end4803 +logic.end4803: + %t40 = phi i1 [ false, %logic.from4801 ], [ %t39, %logic.rend4806 ] + store i1 %t40, ptr %a41 + %t42 = load ptr, ptr %a1 + %t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t44 = load { ptr, i64, i64 }, ptr %t43 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 0, %t45 + br i1 %t46, label %range4807, label %inrange4808 +range4807: + call void @finch_panic_index(ptr @.str.3071, i64 2194, i64 0, i64 %t45) + unreachable +inrange4808: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0 + %t49 = load %S.ast.Node, ptr %t48 + %t50 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t42, %S.ast.Node %t49) + store { ptr, i64, i64 } %t50, ptr %a51 + %t52 = load i1, ptr %a41 + br i1 %t52, label %then4809, label %else4810 +then4809: + %t53 = load ptr, ptr %a1 + %t54 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.br(ptr %t53, { ptr, i64, i64 } %t54) + br label %endif4811 +else4810: + %t55 = load ptr, ptr %a1 + %t56 = load { ptr, i64, i64 }, ptr %a51 + %t57 = load { ptr, i64, i64 }, ptr %a8 + %t58 = load { ptr, i64, i64 }, ptr %a11 + call void @finch.gen.condBr(ptr %t55, { ptr, i64, i64 } %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t58) + br label %endif4811 +endif4811: + %t59 = load ptr, ptr %a1 + %t60 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.label(ptr %t59, { ptr, i64, i64 } %t60) + %t61 = load ptr, ptr %a1 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic4812, label %ok4813 +panic4812: + call void @finch_panic(ptr @.str.3072, i64 2201, ptr @.str.3073) + unreachable +ok4813: + %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 + %t65 = load { ptr, i64, i64 }, ptr %a5 + 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.Loop zeroinitializer, { ptr, i64, i64 } %t68, 0 + %t70 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t70, ptr %a71 + call void @finch_str_copy(ptr %a72, ptr %a71) + %t73 = load { ptr, i64, i64 }, ptr %a72 + %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) + unreachable +ok4815: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 10 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 + %t79 = load i64, ptr %t78 + %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) + 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) + 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) + 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) + 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: + ret void +} + +define internal i1 @finch.gen.countBreaks(%S.ast.Node %p0) { +entry: + %a1 = alloca %S.ast.Node, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, 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 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a37 = alloca %S.ast.Node, 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 %a4 + store { ptr, i64, i64 } { ptr @.str.3082, i64 5, i64 0 }, ptr %a5 + %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) + %t7 = icmp ne i32 %t6, 0 + br i1 %t7, label %then4831, label %endif4833 +then4831: + ret i1 true +endif4833: + %t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 + %t9 = load { ptr, i64, i64 }, ptr %t8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3083, i64 5, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br label %logic.from4834 +logic.from4834: + br i1 %t13, label %logic.end4836, label %logic.rhs4835 +logic.rhs4835: + %t14 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3084, i64 3, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br label %logic.rend4837 +logic.rend4837: + br label %logic.end4836 +logic.end4836: + %t20 = phi i1 [ true, %logic.from4834 ], [ %t19, %logic.rend4837 ] + br label %logic.from4838 +logic.from4838: + br i1 %t20, label %logic.end4840, label %logic.rhs4839 +logic.rhs4839: + %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3085, i64 4, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + br label %logic.rend4841 +logic.rend4841: + br label %logic.end4840 +logic.end4840: + %t27 = phi i1 [ true, %logic.from4838 ], [ %t26, %logic.rend4841 ] + br i1 %t27, label %then4842, label %endif4844 +then4842: + ret i1 false +endif4844: + %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 + store i64 0, ptr %a29 + br label %each.cond4845 +each.cond4845: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = load i64, ptr %a29 + %t33 = icmp slt i64 %t32, %t31 + br i1 %t33, label %each.body4846, label %each.end4848 +each.body4846: + %t34 = load ptr, ptr %t28 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 + %t36 = load %S.ast.Node, ptr %t35 + store %S.ast.Node %t36, ptr %a37 + %t38 = load %S.ast.Node, ptr %a37 + %t39 = call i1 @finch.gen.countBreaks(%S.ast.Node %t38) + br i1 %t39, label %then4849, label %endif4851 +then4849: + ret i1 true +endif4851: + br label %each.step4847 +each.step4847: + %t40 = load i64, ptr %a29 + %t41 = add i64 %t40, 1 + store i64 %t41, ptr %a29 + br label %each.cond4845 +each.end4848: + ret i1 false +} + +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 + %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 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = 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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange4853: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %t12 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t11) + %t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3087, i64 3, i64 0 }) + %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t15 = load { ptr, i64, i64 }, ptr %t14 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 0, %t16 + br i1 %t17, label %range4854, label %inrange4855 +range4854: + call void @finch_panic_index(ptr @.str.3088, i64 2228, i64 0, i64 %t16) + unreachable +inrange4855: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0 + %t20 = load %S.ast.Node, ptr %t19 + %t21 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t12, %S.ast.Type %t13, %S.ast.Node %t20, { ptr, i64, i64 } { ptr @.str.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) + 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) + 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) + %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) + 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 + %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) + 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) + 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) + 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) + %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) + %t170 = load ptr, ptr %a1 + call void @finch.gen.popScope(ptr %t170) + ret void +} + +define internal void @finch.gen.eachMap(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, i1 %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca i1, align 16 + %a13 = alloca %S.ast.Type, align 16 + %a14 = alloca %S.ast.Type, align 16 + %a16 = alloca %S.ast.Type, align 16 + %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 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = 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 + %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 + %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 + %a277 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a282 = 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 + 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 i1 %p4, 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 %range4870, label %inrange4871 +range4870: + call void @finch_panic_index(ptr @.str.3115, i64 2256, i64 0, i64 %t8) + unreachable +inrange4871: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 + %t12 = load %S.ast.Type, ptr %t11 + store %S.ast.Type %t12, ptr %a13 + call void @finch.copy.S_ast_Type(ptr %a14, ptr %a13) + %t15 = load %S.ast.Type, ptr %a14 + store %S.ast.Type %t15, ptr %a16 + %t17 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 + %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) + unreachable +inrange4873: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 + %t23 = load %S.ast.Type, ptr %t22 + store %S.ast.Type %t23, ptr %a24 + call void @finch.copy.S_ast_Type(ptr %a25, ptr %a24) + %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: + %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) + unreachable +inrange4878: + %t34 = extractvalue { ptr, i64, i64 } %t31, 0 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 0 + %t36 = load %S.ast.Node, ptr %t35 + %t37 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t36) + %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 %range4879, label %inrange4880 +range4879: + call void @finch_panic_index(ptr @.str.3118, i64 2258, i64 1, i64 %t40) + unreachable +inrange4880: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 1 + %t44 = load %S.ast.Node, ptr %t43 + %t45 = call i1 @finch.gen.mutates(ptr %t29, { ptr, i64, i64 } %t37, %S.ast.Node %t44) + br label %logic.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 + %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 }) + store { ptr, i64, i64 } %t86, ptr %a87 + %t88 = load ptr, ptr %a1 + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3130, i64 8, i64 0 }) + store { ptr, i64, i64 } %t89, ptr %a90 + %t91 = load ptr, ptr %a1 + %t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.3131, i64 7, 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 + 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 } %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) + 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) + 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 + store { ptr, i64, i64 } %t205, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.3152, i64 6, i64 0 }, ptr %a208 + call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) + %t209 = load { ptr, i64, i64 }, ptr %a206 + %t210 = load { ptr, i64, i64 }, ptr %a3 + 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 } %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) + 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) + 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) + 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) + %t387 = load ptr, ptr %a1 + %t388 = load { ptr, i64, i64 }, ptr %a93 + call void @finch.gen.label(ptr %t387, { ptr, i64, i64 } %t388) + ret void +} + +define internal void @finch.gen.eachStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a13 = alloca %S.gen.Ref, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a193 = 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 + %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 + %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 + %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 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a279 = 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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + call void @finch.gen.pushScope(ptr %t3) + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange4918: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %t12 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 false) + store %S.gen.Ref %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3173, i64 0, i64 0 }, ptr %a14 + %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3174, i64 4, i64 0 }) + store %S.ast.Type %t15, ptr %a16 + %t17 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 + %t18 = load i1, ptr %t17 + br i1 %t18, label %then4919, label %else4920 +then4919: + %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 + %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store { ptr, i64, i64 } %t21, ptr %a22 + call void @finch_str_copy(ptr %a23, ptr %a22) + %t24 = load { ptr, i64, i64 }, ptr %a23 + 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 %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) + 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 + %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 + %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) + unreachable +inrange4938: + %t97 = extractvalue { ptr, i64, i64 } %t94, 0 + %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0 + %t99 = load %S.ast.Type, ptr %t98 + 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) + 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 + %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) + 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 + 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) + 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) + 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) + 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) + %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) + 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) + ret void +} + +define internal void @finch.gen.returnStmt(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.ast.Node, align 16 + %a48 = alloca %S.ast.Node, align 16 + %a50 = alloca %S.ast.Node, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = 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 + %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 + %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 + %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 + %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 + %a164 = 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 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = 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 + %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 + %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 + %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 + %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 + 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) + unreachable +ok4968: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 + %t6 = load i64, ptr %t5 + %t7 = icmp sgt i64 %t6, 0 + br i1 %t7, label %then4969, label %endif4971 +then4969: + %t8 = load ptr, ptr %a1 + %t9 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3219, i64 33, i64 0 }) + br label %endif4971 +endif4971: + %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = icmp sgt i64 %t12, 0 + br label %logic.from4972 +logic.from4972: + br i1 %t13, label %logic.rhs4973, label %logic.end4974 +logic.rhs4973: + %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t15 = load { ptr, i64, i64 }, ptr %t14 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 0, %t16 + br i1 %t17, label %range4975, label %inrange4976 +range4975: + call void @finch_panic_index(ptr @.str.3220, i64 2386, i64 0, i64 %t16) + unreachable +inrange4976: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0 + %t20 = getelementptr inbounds %S.ast.Node, ptr %t19, i32 0, i32 0 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.3221, i64 4, i64 0 }, ptr %a23 + %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + br label %logic.rend4977 +logic.rend4977: + br label %logic.end4974 +logic.end4974: + %t26 = phi i1 [ false, %logic.from4972 ], [ %t25, %logic.rend4977 ] + br label %logic.from4978 +logic.from4978: + br i1 %t26, label %logic.rhs4979, label %logic.end4980 +logic.rhs4979: + %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 0, %t29 + br i1 %t30, label %range4981, label %inrange4982 +range4981: + call void @finch_panic_index(ptr @.str.3222, i64 2386, i64 0, i64 %t29) + unreachable +inrange4982: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 0 + %t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i32 0, i32 1 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3223, i64 5, i64 0 }, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br label %logic.rend4983 +logic.rend4983: + br label %logic.end4980 +logic.end4980: + %t39 = phi i1 [ false, %logic.from4978 ], [ %t38, %logic.rend4983 ] + br i1 %t39, label %then4984, label %endif4986 +then4984: + %t40 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t41 = load { ptr, i64, i64 }, ptr %t40 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 0, %t42 + br i1 %t43, label %range4987, label %inrange4988 +range4987: + call void @finch_panic_index(ptr @.str.3224, i64 2387, i64 0, i64 %t42) + unreachable +inrange4988: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 0 + %t46 = load %S.ast.Node, ptr %t45 + store %S.ast.Node %t46, ptr %a47 + call void @finch.copy.S_ast_Node(ptr %a48, ptr %a47) + %t49 = load %S.ast.Node, ptr %a48 + 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) + unreachable +ok4990: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12 + %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 + %t55 = load i1, ptr %t54 + %t56 = xor i1 %t55, true + br i1 %t56, label %then4991, label %endif4993 +then4991: + store { ptr, i64, i64 } { ptr @.str.3227, i64 1, i64 0 }, ptr %a57 + %t58 = load ptr, ptr %a1 + %t59 = icmp eq ptr %t58, null + br i1 %t59, label %panic4994, label %ok4995 +panic4994: + call void @finch_panic(ptr @.str.3228, i64 2390, ptr @.str.3229) + unreachable +ok4995: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12 + %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 + %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.3230, i64 4, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) + %t67 = icmp eq i32 %t66, 0 + br i1 %t67, label %then4996, label %endif4998 +then4996: + %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) + unreachable +ok5000: + %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12 + %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 + %t72 = load %S.ast.Type, ptr %t71 + %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) + store { ptr, i64, i64 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.3233, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t77, ptr %a57 + br label %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) + 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 + 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) + 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) + 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) + 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 + 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) + unreachable +ok5012: + %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9 + store i1 true, ptr %t175 + 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) + 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) + 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 + %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) + 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: + %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) + 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: + %t240 = load ptr, ptr %a1 + %t241 = load %S.ast.Node, ptr %a2 + %t242 = load ptr, ptr %a1 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic5037, label %ok5038 +panic5037: + call void @finch_panic(ptr @.str.3273, i64 2417, ptr @.str.3274) + 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 + 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) + 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 + %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) + 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) + 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) + 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 + %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 + %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) + 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) + 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) + 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) + 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) + 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) + 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: + %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) + 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) + unreachable +ok5079: + %t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9 + store i1 true, ptr %t451 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.entryTy(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %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) + unreachable +inrange5081: + %t8 = extractvalue { ptr, i64, i64 } %t5, 0 + %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 0 + %t10 = load %S.ast.Type, ptr %t9 + %t11 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t10) + store { ptr, i64, i64 } { ptr @.str.3313, i64 7, i64 0 }, ptr %a13 + store { ptr, i64, i64 } %t11, ptr %a14 + call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) + %t15 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t15, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.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) + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, 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 + 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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.entryAt(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 + %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 + %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 + %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 + %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 + %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 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = 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 = load ptr, ptr %a1 + %t6 = load ptr, ptr %a1 + %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 } %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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca 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 + %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 + %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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = load ptr, ptr %a1 + %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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = 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 { 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 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = 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 + %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) + unreachable +inrange5085: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 + %t12 = getelementptr inbounds %S.ast.Type, ptr %t11, i32 0, i32 0 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3332, i64 3, i64 0 }, ptr %a15 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp ne i32 %t16, 0 + br i1 %t17, label %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) + 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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %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 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store %S.ast.Type %p3, ptr %a4 + %t5 = load ptr, ptr %a1 + %t6 = load ptr, ptr %a1 + %t7 = load { ptr, i64, i64 }, ptr %a2 + %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 } %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 +} + +define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca %S.ast.Node, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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.3342, i64 6, i64 0 }, ptr %a7 + %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) + %t9 = icmp ne i32 %t8, 0 + br label %logic.from5091 +logic.from5091: + br i1 %t9, label %logic.rhs5092, label %logic.end5093 +logic.rhs5092: + %t10 = load ptr, ptr %a1 + %t11 = load %S.ast.Type, ptr %a2 + %t12 = call i1 @finch.gen.hasDefaults(ptr %t10, %S.ast.Type %t11) + br label %logic.rend5094 +logic.rend5094: + br label %logic.end5093 +logic.end5093: + %t13 = phi i1 [ false, %logic.from5091 ], [ %t12, %logic.rend5094 ] + br i1 %t13, label %then5095, label %endif5097 +then5095: + store { ptr, i64, i64 } zeroinitializer, ptr %a14 + store { ptr, i64, i64 } zeroinitializer, ptr %a15 + %t16 = load ptr, ptr %a1 + %t17 = load ptr, ptr %a1 + %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t19 = load { ptr, i64, i64 }, ptr %t18 + %t20 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t21 = load { ptr, i64, i64 }, ptr %t20 + %t22 = call i64 @finch.gen.findStruct(ptr %t17, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) + %t23 = load { ptr, i64, i64 }, ptr %a14 + %t24 = load { ptr, i64, i64 }, ptr %a15 + %t25 = load %S.ast.Node, ptr %a3 + %t26 = call %S.gen.Val @finch.gen.construct(ptr %t16, i64 %t22, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t24, %S.ast.Node %t25) + %t27 = extractvalue %S.gen.Val %t26, 0 + 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 +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 +} + +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) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.gen.Val, align 16 + %a5 = alloca i1, align 16 + %a6 = alloca %S.ast.Node, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a13 = 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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + store %S.gen.Val %p3, ptr %a4 + store i1 %p4, ptr %a5 + store %S.ast.Node %p5, ptr %a6 + %t7 = load ptr, ptr %a1 + %t8 = load %S.gen.Val, ptr %a4 + %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 }) + 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) + %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 } %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 + %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) + 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) + %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) + unreachable +inrange5106: + %t101 = extractvalue { ptr, i64, i64 } %t98, 0 + %t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1 + %t103 = load %S.ast.Type, ptr %t102 + %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 + %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) + unreachable +inrange5108: + %t111 = extractvalue { ptr, i64, i64 } %t108, 0 + %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 + %t113 = load %S.ast.Type, ptr %t112 + 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 +} + +define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.Ref, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca i1, align 16 + %a13 = alloca %S.ast.Type, align 16 + %a14 = alloca %S.ast.Type, align 16 + %a16 = alloca %S.ast.Type, align 16 + %a24 = alloca %S.ast.Type, align 16 + %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 + %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 + %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 + %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 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = 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 + %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 + %a242 = 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 %S.ast.Type %p3, ptr %a4 + store i1 %p4, 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 %range5109, label %inrange5110 +range5109: + call void @finch_panic_index(ptr @.str.3358, i64 2512, i64 0, i64 %t8) + unreachable +inrange5110: + %t10 = extractvalue { ptr, i64, i64 } %t7, 0 + %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 + %t12 = load %S.ast.Type, ptr %t11 + store %S.ast.Type %t12, ptr %a13 + call void @finch.copy.S_ast_Type(ptr %a14, ptr %a13) + %t15 = load %S.ast.Type, ptr %a14 + store %S.ast.Type %t15, ptr %a16 + %t17 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 + %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) + unreachable +inrange5112: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 + %t23 = load %S.ast.Type, ptr %t22 + store %S.ast.Type %t23, ptr %a24 + call void @finch.copy.S_ast_Type(ptr %a25, ptr %a24) + %t26 = load %S.ast.Type, ptr %a25 + store %S.ast.Type %t26, ptr %a27 + %t28 = load ptr, ptr %a1 + %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 1, %t32 + br i1 %t33, label %range5113, label %inrange5114 +range5113: + call void @finch_panic_index(ptr @.str.3360, i64 2514, i64 1, i64 %t32) + unreachable +inrange5114: + %t34 = extractvalue { ptr, i64, i64 } %t31, 0 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 1 + %t36 = load %S.ast.Node, ptr %t35 + %t37 = load %S.ast.Type, ptr %a16 + %t38 = call %S.gen.Val @finch.gen.exprWant(ptr %t29, %S.ast.Node %t36, %S.ast.Type %t37) + %t39 = load %S.ast.Type, ptr %a16 + %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 1, %t42 + br i1 %t43, label %range5115, label %inrange5116 +range5115: + call void @finch_panic_index(ptr @.str.3361, i64 2514, i64 1, i64 %t42) + unreachable +inrange5116: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 1 + %t46 = load %S.ast.Node, ptr %t45 + %t47 = call %S.gen.Val @finch.gen.coerce(ptr %t28, %S.gen.Val %t38, %S.ast.Type %t39, %S.ast.Node %t46, { ptr, i64, i64 } { ptr @.str.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 + %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 + %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) + %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) + 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) + 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) + 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 +} + +define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a5 = alloca %S.ast.Type, align 16 + %a6 = alloca %S.ast.Type, align 16 + %a8 = alloca %S.ast.Type, align 16 + %a9 = alloca i1, align 16 + %a10 = alloca %S.gen.Val, align 16 + %a11 = alloca %S.gen.Val, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca i1, align 16 + %a25 = alloca i1, align 16 + %a30 = alloca i64, align 16 + %a43 = alloca %S.ast.Node, align 16 + %a44 = 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 + %a55 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.ast.Type %p2, ptr %a3 + %t4 = load %S.ast.Type, ptr %a3 + store %S.ast.Type %t4, ptr %a5 + call void @finch.copy.S_ast_Type(ptr %a6, ptr %a5) + %t7 = load %S.ast.Type, ptr %a6 + store %S.ast.Type %t7, ptr %a8 + store i1 false, ptr %a9 + store %S.gen.Val zeroinitializer, ptr %a10 + store %S.gen.Val zeroinitializer, ptr %a11 + %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 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp eq i32 %t16, 0 + br i1 %t17, label %then5142, label %endif5144 +then5142: + %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i32 0, i32 1 + %t20 = load i64, ptr %t19 + %t21 = icmp eq i64 %t20, 0 + br i1 %t21, label %then5145, label %endif5147 +then5145: + %t22 = load ptr, ptr %a1 + %t23 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3383, i64 52, i64 0 }) + br label %endif5147 +endif5147: + store i1 true, ptr %a24 + store i1 false, ptr %a25 + %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1 + %t28 = load i64, ptr %t27 + %t29 = sdiv i64 %t28, 2 + store i64 0, ptr %a30 + br label %for.cond5148 +for.cond5148: + %t31 = load i64, ptr %a30 + %t32 = icmp slt i64 %t31, %t29 + br i1 %t32, label %for.body5149, label %for.end5151 +for.body5149: + %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t34 = load i64, ptr %a30 + %t35 = mul i64 2, %t34 + %t36 = add i64 %t35, 1 + %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) + unreachable +inrange5153: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 + %t42 = load %S.ast.Node, ptr %t41 + 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 + store %S.ast.Node %t45, ptr %a46 + %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 + %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: + %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 + %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: + %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) + unreachable +inrange5162: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 + %t66 = load %S.ast.Node, ptr %t65 + 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 + 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 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: + 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) + 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) + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 +} + +define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca %S.ast.Type, align 16 + %a19 = alloca %S.ast.Type, align 16 + %a21 = alloca %S.ast.Type, align 16 + %a29 = alloca %S.ast.Type, align 16 + %a30 = alloca %S.ast.Type, align 16 + %a32 = alloca %S.ast.Type, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = 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 + %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 + %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 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = 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 + %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 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a183 = 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 + %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 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = 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 + %a329 = 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 + %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 + %a389 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = 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 + %a567 = alloca { ptr, i64, i64 }, align 16 + %a568 = 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 + 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 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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 + store { ptr, i64, i64 } %t9, ptr %a10 + %t11 = getelementptr inbounds %S.ast.Type, ptr %a4, 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 %range5227, label %inrange5228 +range5227: + call void @finch_panic_index(ptr @.str.3413, i64 2612, i64 0, i64 %t13) + unreachable +inrange5228: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 + %t17 = load %S.ast.Type, ptr %t16 + 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 + store %S.ast.Type %t20, ptr %a21 + %t22 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 + %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) + unreachable +inrange5230: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds %S.ast.Type, ptr %t26, i64 1 + %t28 = load %S.ast.Type, ptr %t27 + store %S.ast.Type %t28, ptr %a29 + call void @finch.copy.S_ast_Type(ptr %a30, ptr %a29) + %t31 = load %S.ast.Type, ptr %a30 + 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 + %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: + %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 + %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: + %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 + %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: + %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 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br i1 %t54, label %then5242, label %else5243 +then5242: + %t55 = load ptr, ptr %a1 + %t56 = load %S.ast.Node, ptr %a2 + %t57 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t55, %S.ast.Node %t56, i64 1, i64 2, { ptr, i64, i64 } %t57) + br label %endif5244 +else5243: + %t58 = load ptr, ptr %a1 + %t59 = load %S.ast.Node, ptr %a2 + %t60 = load { ptr, i64, i64 }, ptr %a10 + call void @finch.gen.checkArgs(ptr %t58, %S.ast.Node %t59, i64 1, i64 1, { ptr, i64, i64 } %t60) + br label %endif5244 +endif5244: + %t61 = load ptr, ptr %a1 + %t62 = load ptr, ptr %a1 + %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t64 = load { ptr, i64, i64 }, ptr %t63 + %t65 = extractvalue { ptr, i64, i64 } %t64, 1 + %t66 = icmp uge i64 1, %t65 + br i1 %t66, label %range5245, label %inrange5246 +range5245: + call void @finch_panic_index(ptr @.str.3419, i64 2620, i64 1, i64 %t65) + unreachable +inrange5246: + %t67 = extractvalue { ptr, i64, i64 } %t64, 0 + %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 1 + %t69 = load %S.ast.Node, ptr %t68 + %t70 = load %S.ast.Type, ptr %a21 + %t71 = call %S.gen.Val @finch.gen.exprWant(ptr %t62, %S.ast.Node %t69, %S.ast.Type %t70) + %t72 = load %S.ast.Type, ptr %a21 + %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange5248: + %t77 = extractvalue { ptr, i64, i64 } %t74, 0 + %t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 1 + %t79 = load %S.ast.Node, ptr %t78 + %t80 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t71, %S.ast.Type %t72, %S.ast.Node %t79, { ptr, i64, i64 } { ptr @.str.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 + 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 } %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 + %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) + %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) + %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 + %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 + %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) + %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 + %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) + %t247 = load ptr, ptr %a1 + %t248 = load { ptr, i64, i64 }, ptr %a186 + call void @finch.gen.label(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) + 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 + %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) + %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 + 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) + ret %S.gen.Val zeroinitializer +} + +define internal %S.gen.Val @finch.gen.patternValue(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca %S.gen.EnumDef, align 16 + %a39 = alloca %S.gen.EnumDef, align 16 + %a41 = alloca %S.gen.EnumDef, align 16 + %a46 = alloca i64, align 16 + %a49 = alloca i64, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca 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 + %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 + %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 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca %S.ast.Type, align 16 + %a111 = 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 = 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 + %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: + %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 + %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: + %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: + %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) + unreachable +ok5286: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20 + %t26 = load ptr, ptr %a1 + %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 + %t30 = load { ptr, i64, i64 }, ptr %t29 + %t31 = call i64 @finch.gen.findEnum(ptr %t26, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t30) + %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) + unreachable +inrange5288: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 + %t37 = load %S.gen.EnumDef, ptr %t36 + store %S.gen.EnumDef %t37, ptr %a38 + call void @finch.copy.S_gen_EnumDef(ptr %a39, ptr %a38) + %t40 = load %S.gen.EnumDef, ptr %a39 + store %S.gen.EnumDef %t40, ptr %a41 + %t42 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store i64 -1, ptr %a46 + %t47 = load i64, ptr %t43 + %t48 = load ptr, ptr %t42 + store i64 0, ptr %a49 + br label %find.cond5289 +find.cond5289: + %t50 = load i64, ptr %a49 + %t51 = icmp slt i64 %t50, %t47 + br i1 %t51, label %find.body5290, label %find.end5293 +find.body5290: + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i64 %t50 + %t53 = load { ptr, i64, i64 }, ptr %t52 + store { ptr, i64, i64 } %t53, ptr %a54 + store { ptr, i64, i64 } %t45, ptr %a55 + %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) + %t57 = icmp ne i32 %t56, 0 + br i1 %t57, label %find.hit5291, label %find.next5292 +find.hit5291: + store i64 %t50, ptr %a46 + br label %find.end5293 +find.next5292: + %t58 = add i64 %t50, 1 + store i64 %t58, ptr %a49 + br label %find.cond5289 +find.end5293: + %t59 = load i64, ptr %a46 + store i64 %t59, ptr %a60 + %t61 = load i64, ptr %a60 + %t62 = icmp slt i64 %t61, 0 + br i1 %t62, label %then5294, label %endif5296 +then5294: + %t63 = load ptr, ptr %a1 + %t64 = load %S.ast.Node, ptr %a2 + %t65 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t66 = load { ptr, i64, i64 }, ptr %t65 + store { ptr, i64, i64 } { ptr @.str.3495, i64 1, i64 0 }, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t70, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.3496, i64 22, i64 0 }, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a71 + %t75 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 + %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) + 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 +} + +define internal %S.gen.Val @finch.gen.matchGen(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a13 = alloca %S.gen.Val, align 16 + %a16 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.ast.Type, align 16 + %a19 = alloca %S.ast.Type, align 16 + %a22 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i1 %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange5300: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %t12 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t11) + store %S.gen.Val %t12, ptr %a13 + %t14 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 1 + %t15 = load %S.ast.Type, ptr %t14 + store %S.ast.Type %t15, ptr %a16 + call void @finch.copy.S_ast_Type(ptr %a17, ptr %a16) + %t18 = load %S.ast.Type, ptr %a17 + store %S.ast.Type %t18, ptr %a19 + %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 + %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: + %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 + %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: + %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) + unreachable +inrange5309: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 0 + %t40 = load %S.ast.Node, ptr %t39 + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3506, i64 30, i64 0 }) + br label %endif5307 +endif5307: + %t41 = load ptr, ptr %a1 + %t42 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t41, { ptr, i64, i64 } { ptr @.str.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) + 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 + %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) + 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) + 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 + %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) + 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) + 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 + %t182 = load ptr, ptr %a1 + %t183 = getelementptr inbounds %S.gen.Val, ptr %a168, 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 + call void @finch.gen.condBr(ptr %t182, { ptr, i64, i64 } %t184, { ptr, i64, i64 } %t185, { ptr, i64, i64 } %t186) + %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) + 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 + %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 + %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: + %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: + %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: + %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 + %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) + 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) + unreachable +inrange5394: + %t340 = extractvalue { ptr, i64, i64 } %t337, 0 + %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 + %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) + 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) + 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) + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca i64, align 16 + %a17 = 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 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = 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: + %t7 = load i64, ptr %a6 + %t8 = icmp slt i64 %t7, %t5 + br i1 %t8, label %for.body5419, label %for.end5421 +for.body5419: + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t10 = load i64, ptr %a6 + %t11 = load { ptr, i64, i64 }, ptr %a1 + %t12 = extractvalue { ptr, i64, i64 } %t11, 1 + %t13 = icmp uge i64 %t10, %t12 + br i1 %t13, label %range5422, label %inrange5423 +range5422: + call void @finch_panic_index(ptr @.str.3555, i64 2824, i64 %t10, i64 %t12) + unreachable +inrange5423: + %t14 = extractvalue { ptr, i64, i64 } %t11, 0 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t10 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.3554, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t20, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.3556, i64 3, i64 0 }, ptr %a23 + call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) + %t24 = load { ptr, i64, i64 }, ptr %a21 + %t25 = load i64, ptr %a6 + %t26 = load { ptr, i64, i64 }, ptr %a2 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range5424, label %inrange5425 +range5424: + call void @finch_panic_index(ptr @.str.3557, i64 2824, i64 %t25, i64 %t27) + 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 +} + +define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = 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 + %a33 = 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 + %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 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a97 = 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 + 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 + %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: + %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 + %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: + %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: + %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) + unreachable +ok5434: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 39 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store { ptr, i64, i64 } %t21, ptr %a22 + call void @finch_str_copy(ptr %a23, ptr %a22) + %t24 = load { ptr, i64, i64 }, ptr %a23 + 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) + unreachable +ok5436: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 40 + %t29 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t29, ptr %a30 + call void @finch_str_copy(ptr %a31, ptr %a30) + %t32 = load { ptr, i64, i64 }, ptr %a31 + 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) + unreachable +ok5438: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 41 + %t37 = load { ptr, i64, i64 }, ptr %t36 + store { ptr, i64, i64 } %t37, ptr %a38 + call void @finch_str_copy(ptr %a39, ptr %a38) + %t40 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t40, ptr %a41 + %t42 = load %S.ast.Node, ptr %a2 + %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) + unreachable +ok5440: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 39 + store { ptr, i64, i64 } %t43, ptr %t46 + %t47 = load ptr, ptr %a1 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic5441, label %ok5442 +panic5441: + call void @finch_panic(ptr @.str.3572, i64 2846, ptr @.str.3573) + 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) + 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) + 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) + 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) + 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) + 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: + %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 +} + +define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a23 = 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 + %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 + %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 + %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 + %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 + 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) + unreachable +ok5459: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 + %t6 = load i64, ptr %t5 + %t7 = icmp sgt i64 %t6, 0 + br i1 %t7, label %then5460, label %endif5462 +then5460: + %t8 = load ptr, ptr %a1 + %t9 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3590, i64 30, i64 0 }) + br label %endif5462 +endif5462: + %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) + unreachable +ok5464: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12 + %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 + %t14 = load i1, ptr %t13 + %t15 = xor i1 %t14, true + br i1 %t15, label %then5465, label %endif5467 +then5465: + store { ptr, i64, i64 } { ptr @.str.3593, i64 1, i64 0 }, ptr %a16 + %t17 = load ptr, ptr %a1 + %t18 = icmp eq ptr %t17, null + br i1 %t18, label %panic5468, label %ok5469 +panic5468: + call void @finch_panic(ptr @.str.3594, i64 2866, ptr @.str.3595) + unreachable +ok5469: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12 + %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 + %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3596, i64 4, i64 0 }, ptr %a24 + %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) + %t26 = icmp eq i32 %t25, 0 + br i1 %t26, label %then5470, label %endif5472 +then5470: + %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) + unreachable +ok5474: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12 + %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 + %t31 = load %S.ast.Type, ptr %t30 + %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.3599, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a33 + store { ptr, i64, i64 } %t36, ptr %a16 + br label %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) + 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 + 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) + 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) + %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) + 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) + 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 + 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) + 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 +} + +define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a13 = alloca %S.gen.Fallible, align 16 + %a16 = alloca %S.gen.Val, align 16 + %a17 = alloca %S.gen.Val, align 16 + %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 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca %S.gen.Val, align 16 + %a155 = alloca { ptr, i64, i64 }, 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 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i1 %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange5486: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %t12 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t4, %S.ast.Node %t11) + store %S.gen.Fallible %t12, ptr %a13 + %t14 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 0 + %t15 = load %S.gen.Val, ptr %t14 + store %S.gen.Val %t15, ptr %a16 + call void @finch.copy.S_gen_Val(ptr %a17, ptr %a16) + %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 }) + 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 }) + store { ptr, i64, i64 } %t24, ptr %a25 + %t26 = load ptr, ptr %a1 + %t27 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 1 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = load { ptr, i64, i64 }, ptr %a22 + %t30 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.condBr(ptr %t26, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t29, { ptr, i64, i64 } %t30) + %t31 = load ptr, ptr %a1 + %t32 = load { ptr, i64, i64 }, ptr %a22 + 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: + %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 }) + %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) + 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) + 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) + 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) + %t91 = load ptr, ptr %a1 + %t92 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(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) + %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: + %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) + 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) + %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) + 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) + %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) + 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 + %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 }) + 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) + %t167 = load ptr, ptr %a1 + %t168 = load { ptr, i64, i64 }, ptr %a162 + call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) + %t169 = load ptr, ptr %a1 + %t170 = load { ptr, i64, i64 }, ptr %a25 + call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) + %t171 = load ptr, ptr %a1 + %t172 = load { ptr, i64, i64 }, ptr %a162 + call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) + %t173 = load ptr, ptr %a1 + %t174 = load { ptr, i64, i64 }, ptr %a162 + 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 + 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 + 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 +} + +define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.ast.Type %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.3649, i64 5, i64 0 }, ptr %a7 + %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) + %t9 = icmp ne i32 %t8, 0 + br i1 %t9, label %then5523, label %endif5525 +then5523: + %t10 = load ptr, ptr %a1 + %t11 = load %S.ast.Node, ptr %a2 + %t12 = load %S.ast.Type, ptr %a3 + %t13 = call %S.gen.Val @finch.gen.arrayLit(ptr %t10, %S.ast.Node %t11, %S.ast.Type %t12) + ret %S.gen.Val %t13 +endif5525: + %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3650, i64 3, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %then5526, label %endif5528 +then5526: + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Node, ptr %a2 + %t22 = load %S.ast.Type, ptr %a3 + %t23 = call %S.gen.Val @finch.gen.mapLit(ptr %t20, %S.ast.Node %t21, %S.ast.Type %t22) + ret %S.gen.Val %t23 +endif5528: + %t24 = load ptr, ptr %a1 + %t25 = load %S.ast.Node, ptr %a2 + %t26 = call %S.gen.Val @finch.gen.expr(ptr %t24, %S.ast.Node %t25) + ret %S.gen.Val %t26 +} + +define internal %S.gen.Val @finch.gen.expr(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %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 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca i64, align 16 + %a47 = alloca i8, align 16 + %a52 = alloca i64, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = 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 + %a136 = alloca i64, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = 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 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %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 + %a204 = alloca %S.ast.Type, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a264 = 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 + 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 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3651, i64 3, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br i1 %t13, label %then5529, label %endif5531 +then5529: + %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3653, i64 2, i64 0 }, ptr %a18 + %t19 = call i32 @finch_str_starts(ptr %a16, ptr %a18) + %t20 = icmp ne i32 %t19, 0 + br label %logic.from5532 +logic.from5532: + br i1 %t20, label %logic.end5534, label %logic.rhs5533 +logic.rhs5533: + %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3655, i64 2, i64 0 }, ptr %a25 + %t26 = call i32 @finch_str_starts(ptr %a23, ptr %a25) + %t27 = icmp ne i32 %t26, 0 + br label %logic.rend5535 +logic.rend5535: + br label %logic.end5534 +logic.end5534: + %t28 = phi i1 [ true, %logic.from5532 ], [ %t27, %logic.rend5535 ] + br i1 %t28, label %then5536, label %endif5538 +then5536: + store i64 0, ptr %a29 + %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t31 = load { ptr, i64, i64 }, ptr %t30 + store { ptr, i64, i64 } %t31, ptr %a32 + %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) + %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: + %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: + %t44 = load ptr, ptr %a38 + %t45 = getelementptr inbounds i8, ptr %t44, i64 %t42 + %t46 = load i8, ptr %t45 + store i8 %t46, ptr %a47 + %t48 = load i8, ptr %a47 + %t49 = zext i8 %t48 to i64 + %t50 = zext i8 48 to i64 + %t51 = sub i64 %t49, %t50 + 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: + %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: + %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: + %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: + %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: + %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: + %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: + %t77 = load i64, ptr %a39 + %t78 = add i64 %t77, 1 + store i64 %t78, ptr %a39 + br label %each.cond5539 +each.end5542: + %t79 = load i64, ptr %a29 + call void @finch_str_from_int(ptr %a80, i64 %t79) + %t81 = load { ptr, i64, i64 }, ptr %a80 + %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 + %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3657, i64 3, i64 0 }) + %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 + %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 + ret %S.gen.Val %t85 +endif5538: + %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t87 = load { ptr, i64, i64 }, ptr %t86 + store { ptr, i64, i64 } %t87, ptr %a88 + %t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3658, i64 2958) + call void @finch_str_from_int(ptr %a90, i64 %t89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t91, 0 + %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3659, i64 3, i64 0 }) + %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 + %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 + ret %S.gen.Val %t95 +endif5531: + %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 + %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) + %t100 = icmp ne i32 %t99, 0 + br i1 %t100, label %then5557, label %endif5559 +then5557: + %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t102, ptr %a103 + call void @finch_str_copy(ptr %a104, ptr %a103) + %t105 = load { ptr, i64, i64 }, ptr %a104 + %t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0 + %t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3661, i64 5, i64 0 }) + %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 + %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 + ret %S.gen.Val %t109 +endif5559: + %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 + %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br i1 %t114, label %then5560, label %endif5562 +then5560: + %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t116 = load { ptr, i64, i64 }, ptr %t115 + store { ptr, i64, i64 } %t116, ptr %a117 + call void @finch_str_copy(ptr %a118, ptr %a117) + %t119 = load { ptr, i64, i64 }, ptr %a118 + %t120 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t119, 0 + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3663, i64 4, i64 0 }) + %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 + ret %S.gen.Val %t122 +endif5562: + %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 + %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) + %t127 = icmp ne i32 %t126, 0 + br i1 %t127, label %then5563, label %endif5565 +then5563: + %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t129 = load { ptr, i64, i64 }, ptr %t128 + %t130 = extractvalue { ptr, i64, i64 } %t129, 1 + %t131 = icmp uge i64 0, %t130 + br i1 %t131, label %range5566, label %inrange5567 +range5566: + call void @finch_panic_index(ptr @.str.3665, i64 2967, i64 0, i64 %t130) + unreachable +inrange5567: + %t132 = extractvalue { ptr, i64, i64 } %t129, 0 + %t133 = getelementptr inbounds i8, ptr %t132, i64 0 + %t134 = load i8, ptr %t133 + %t135 = zext i8 %t134 to i64 + store i64 %t135, ptr %a136 + %t137 = load i64, ptr %a136 + 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 }) + %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 + ret %S.gen.Val %t142 +endif5565: + %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 + %t146 = call i32 @finch_str_eq(ptr %a144, ptr %a145) + %t147 = icmp ne i32 %t146, 0 + br i1 %t147, label %then5568, label %endif5570 +then5568: + %t148 = load ptr, ptr %a1 + %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 + %t150 = load { ptr, i64, i64 }, ptr %t149 + %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) + ret %S.gen.Val %t151 +endif5570: + %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 + %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 }) + %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 + ret %S.gen.Val %t159 +endif5573: + %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 + %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: + %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 + %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: + %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 + %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: + %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) + store %S.gen.Ref %t179, ptr %a180 + %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: + %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 + %t185 = load %S.gen.Val, ptr %t184 + store %S.gen.Val %t185, ptr %a186 + call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) + %t188 = load %S.gen.Val, ptr %a187 + ret %S.gen.Val %t188 +endif5587: + %t189 = load ptr, ptr %a1 + %t190 = load ptr, ptr %a1 + %t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 + %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 1 + %t193 = load %S.ast.Type, ptr %t192 + %t194 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t190, %S.ast.Type %t193) + %t195 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 + %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) + ret %S.gen.Val zeroinitializer +} + +define internal %S.gen.Val @finch.gen.unary(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca %S.ast.Type, align 16 + %a174 = alloca %S.ast.Type, 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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange5616: + %t8 = extractvalue { ptr, i64, i64 } %t5, 0 + %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 + %t10 = load %S.ast.Node, ptr %t9 + %t11 = call %S.gen.Val @finch.gen.expr(ptr %t3, %S.ast.Node %t10) + store %S.gen.Val %t11, ptr %a12 + %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 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br i1 %t18, label %then5617, label %endif5619 +then5617: + %t19 = load ptr, ptr %a1 + %t20 = load %S.gen.Val, ptr %a12 + %t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3688, i64 4, i64 0 }) + %t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t23 = load { ptr, i64, i64 }, ptr %t22 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 0, %t24 + br i1 %t25, label %range5620, label %inrange5621 +range5620: + call void @finch_panic_index(ptr @.str.3689, i64 3017, i64 0, i64 %t24) + unreachable +inrange5621: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds %S.ast.Node, ptr %t26, i64 0 + %t28 = load %S.ast.Node, ptr %t27 + %t29 = call %S.gen.Val @finch.gen.coerce(ptr %t19, %S.gen.Val %t20, %S.ast.Type %t21, %S.ast.Node %t28, { ptr, i64, i64 } { ptr @.str.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 + 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: + %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 +} + +define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.gen.Val, align 16 + %a4 = alloca %S.gen.Val, align 16 + %a5 = alloca %S.ast.Node, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = 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 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = 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 + 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 } %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 + 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 } %t48, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3713, i64 3, i64 0 }, ptr %a50 + %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) + %t52 = icmp ne i32 %t51, 0 + br label %logic.from5649 +logic.from5649: + br i1 %t52, label %logic.end5651, label %logic.rhs5650 +logic.rhs5650: + %t53 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 + %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 + %t55 = load { ptr, i64, i64 }, ptr %t54 + store { ptr, i64, i64 } %t55, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.3714, i64 3, i64 0 }, ptr %a57 + %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) + %t59 = icmp ne i32 %t58, 0 + br label %logic.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 + 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 + store { ptr, i64, i64 } %t137, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.3728, i64 6, i64 0 }, ptr %a139 + %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) + %t141 = icmp ne i32 %t140, 0 + br label %logic.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) + ret void +} + +define internal i1 @finch.gen.unify(ptr %p0, ptr %p1, ptr %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca ptr, align 16 + %a3 = alloca ptr, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %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 + 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) + unreachable +ok5706: + %t6 = getelementptr inbounds %S.gen.Val, ptr %t4, i32 0, i32 1 + %t7 = load %S.ast.Type, ptr %t6 + %t8 = load ptr, ptr %a3 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic5707, label %ok5708 +panic5707: + call void @finch_panic(ptr @.str.3735, i64 3069, ptr @.str.3736) + unreachable +ok5708: + %t10 = getelementptr inbounds %S.gen.Val, ptr %t8, i32 0, i32 1 + %t11 = load %S.ast.Type, ptr %t10 + %t12 = call i1 @finch.ast.same(%S.ast.Type %t7, %S.ast.Type %t11) + br i1 %t12, label %then5709, label %endif5711 +then5709: + ret i1 true +endif5711: + %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) + unreachable +ok5713: + %t15 = getelementptr inbounds %S.gen.Val, ptr %t13, i32 0, i32 1 + %t16 = load %S.ast.Type, ptr %t15 + %t17 = call i1 @finch.gen.isInt(%S.ast.Type %t16) + br label %logic.from5714 +logic.from5714: + br i1 %t17, label %logic.rhs5715, label %logic.end5716 +logic.rhs5715: + %t18 = load ptr, ptr %a3 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic5717, label %ok5718 +panic5717: + call void @finch_panic(ptr @.str.3739, i64 3072, ptr @.str.3740) + unreachable +ok5718: + %t20 = getelementptr inbounds %S.gen.Val, ptr %t18, i32 0, i32 1 + %t21 = load %S.ast.Type, ptr %t20 + %t22 = call i1 @finch.gen.isInt(%S.ast.Type %t21) + br label %logic.rend5719 +logic.rend5719: + br label %logic.end5716 +logic.end5716: + %t23 = phi i1 [ false, %logic.from5714 ], [ %t22, %logic.rend5719 ] + br i1 %t23, label %then5720, label %endif5722 +then5720: + %t24 = load ptr, ptr %a2 + %t25 = icmp eq ptr %t24, null + br i1 %t25, label %panic5723, label %ok5724 +panic5723: + call void @finch_panic(ptr @.str.3741, i64 3075, ptr @.str.3742) + unreachable +ok5724: + %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: + %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) + unreachable +ok5729: + %t30 = getelementptr inbounds %S.gen.Val, ptr %t28, i32 0, i32 3 + %t31 = load i1, ptr %t30 + %t32 = xor i1 %t31, true + br label %logic.rend5730 +logic.rend5730: + br label %logic.end5727 +logic.end5727: + %t33 = phi i1 [ false, %logic.from5725 ], [ %t32, %logic.rend5730 ] + br label %logic.from5731 +logic.from5731: + br i1 %t33, label %logic.rhs5732, label %logic.end5733 +logic.rhs5732: + %t34 = load ptr, ptr %a2 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic5734, label %ok5735 +panic5734: + call void @finch_panic(ptr @.str.3745, i64 3075, ptr @.str.3746) + unreachable +ok5735: + %t36 = getelementptr inbounds %S.gen.Val, ptr %t34, i32 0, i32 0 + %t37 = load { ptr, i64, i64 }, ptr %t36 + %t38 = load ptr, ptr %a2 + %t39 = icmp eq ptr %t38, null + br i1 %t39, label %panic5736, label %ok5737 +panic5736: + call void @finch_panic(ptr @.str.3747, i64 3075, ptr @.str.3748) + unreachable +ok5737: + %t40 = getelementptr inbounds %S.gen.Val, ptr %t38, i32 0, i32 1 + %t41 = load %S.ast.Type, ptr %t40 + %t42 = load ptr, ptr %a3 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic5738, label %ok5739 +panic5738: + call void @finch_panic(ptr @.str.3749, i64 3075, ptr @.str.3750) + unreachable +ok5739: + %t44 = getelementptr inbounds %S.gen.Val, ptr %t42, i32 0, i32 1 + %t45 = load %S.ast.Type, ptr %t44 + %t46 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t37, %S.ast.Type %t41, %S.ast.Type %t45) + br label %logic.rend5740 +logic.rend5740: + br label %logic.end5733 +logic.end5733: + %t47 = phi i1 [ false, %logic.from5731 ], [ %t46, %logic.rend5740 ] + br i1 %t47, label %then5741, label %endif5743 +then5741: + %t48 = load ptr, ptr %a2 + %t49 = icmp eq ptr %t48, null + br i1 %t49, label %panic5744, label %ok5745 +panic5744: + call void @finch_panic(ptr @.str.3751, i64 3076, ptr @.str.3752) + unreachable +ok5745: + %t50 = getelementptr inbounds %S.gen.Val, ptr %t48, i32 0, i32 0 + %t51 = load { ptr, i64, i64 }, ptr %t50 + store { ptr, i64, i64 } %t51, ptr %a52 + call void @finch_str_copy(ptr %a53, ptr %a52) + %t54 = load { ptr, i64, i64 }, ptr %a53 + %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) + unreachable +ok5747: + %t58 = getelementptr inbounds %S.gen.Val, ptr %t56, i32 0, i32 1 + %t59 = load %S.ast.Type, ptr %t58 + store %S.ast.Type %t59, ptr %a60 + call void @finch.copy.S_ast_Type(ptr %a61, ptr %a60) + %t62 = load %S.ast.Type, ptr %a61 + %t63 = insertvalue %S.gen.Val %t55, %S.ast.Type %t62, 1 + %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) + unreachable +ok5749: + store %S.gen.Val %t64, ptr %t65 + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + %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) + unreachable +ok5780: + %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 + %t117 = load %S.ast.Type, ptr %t116 + %t118 = call i1 @finch.gen.widens(%S.ast.Type %t113, %S.ast.Type %t117) + br i1 %t118, label %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) + unreachable +ok5785: + %t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0 + %t123 = load { ptr, i64, i64 }, ptr %t122 + %t124 = load ptr, ptr %a2 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic5786, label %ok5787 +panic5786: + call void @finch_panic(ptr @.str.3779, i64 3084, ptr @.str.3780) + 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 + %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) + unreachable +ok5789: + %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 + %t131 = load %S.ast.Type, ptr %t130 + %t132 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t119, { ptr, i64, i64 } %t123, %S.ast.Type %t127, %S.ast.Type %t131) + %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t132, 0 + %t134 = load ptr, ptr %a3 + %t135 = icmp eq ptr %t134, null + br i1 %t135, label %panic5790, label %ok5791 +panic5790: + call void @finch_panic(ptr @.str.3783, i64 3084, ptr @.str.3784) + 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) + unreachable +ok5793: + store %S.gen.Val %t141, ptr %t142 + 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) + 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 + %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) + 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) + 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) + 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 + %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) + unreachable +ok5808: + %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 + %t171 = load %S.ast.Type, ptr %t170 + store %S.ast.Type %t171, ptr %a172 + 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) + unreachable +ok5810: + store %S.gen.Val %t175, ptr %t176 + ret i1 true +endif5800: + 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) + 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) + 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) + 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 + %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) + unreachable +ok5829: + %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 + %t204 = load %S.ast.Type, ptr %t203 + %t205 = call i1 @finch.gen.isFloat(%S.ast.Type %t204) + br label %logic.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) + 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 + ret i1 true +endif5838: + %t224 = load ptr, ptr %a2 + %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) + 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) + 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) + 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) + unreachable +ok5862: + %t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0 + %t248 = load { ptr, i64, i64 }, ptr %t247 + %t249 = load ptr, ptr %a2 + %t250 = icmp eq ptr %t249, null + br i1 %t250, label %panic5863, label %ok5864 +panic5863: + call void @finch_panic(ptr @.str.3832, i64 3103, ptr @.str.3833) + unreachable +ok5864: + %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 + %t252 = load %S.ast.Type, ptr %t251 + %t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.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) + 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) + 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) + 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) + 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) + unreachable +ok5877: + store %S.gen.Val %t282, ptr %t283 + br label %endif5871 +endif5871: + ret i1 true +endif5855: + ret i1 false +} + +define internal %S.ast.Node @finch.gen.Node0() { +entry: + + ret %S.ast.Node zeroinitializer +} + +define internal %S.gen.Val @finch.gen.arith(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.gen.Val, align 16 + %a4 = alloca %S.gen.Val, align 16 + %a6 = alloca %S.gen.Val, align 16 + %a7 = alloca %S.gen.Val, align 16 + %a8 = alloca %S.gen.Val, align 16 + %a10 = alloca %S.gen.Val, align 16 + %a11 = alloca %S.ast.Node, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = 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 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.gen.Val %p2, ptr %a3 + call void @finch.copy.S_gen_Val(ptr %a4, ptr %a3) + %t5 = load %S.gen.Val, ptr %a4 + store %S.gen.Val %t5, ptr %a6 + store %S.gen.Val %p3, ptr %a7 + call void @finch.copy.S_gen_Val(ptr %a8, ptr %a7) + %t9 = load %S.gen.Val, ptr %a8 + store %S.gen.Val %t9, ptr %a10 + 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 + %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: + %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 + %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: + %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 + %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: + %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 }) + 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 } %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 + 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 + 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: + %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: + %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 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.3891, i64 1, i64 0 }, ptr %a181 + %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) + %t183 = icmp ne i32 %t182, 0 + br label %logic.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 + 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) + 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 + store { ptr, i64, i64 } %t239, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3900, i64 2, i64 0 }, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a240 + %t244 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 + %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) + 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 +} + +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) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.gen.Val, align 16 + %a4 = alloca %S.gen.Val, align 16 + %a6 = alloca %S.gen.Val, align 16 + %a7 = alloca %S.gen.Val, align 16 + %a8 = alloca %S.gen.Val, align 16 + %a10 = alloca %S.gen.Val, align 16 + %a11 = alloca %S.ast.Node, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca i1, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = 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 + %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 + %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 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = 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 + %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 + %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 + %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 + %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 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a248 = 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 + %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 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a350 = 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 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a361 = alloca { ptr, i64, i64 }, align 16 + %a362 = 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 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = 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 + %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 + %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 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 + %a458 = 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 + call void @finch.copy.S_gen_Val(ptr %a4, ptr %a3) + %t5 = load %S.gen.Val, ptr %a4 + store %S.gen.Val %t5, ptr %a6 + store %S.gen.Val %p3, ptr %a7 + call void @finch.copy.S_gen_Val(ptr %a8, ptr %a7) + %t9 = load %S.gen.Val, ptr %a8 + store %S.gen.Val %t9, ptr %a10 + 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 + %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: + %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 + %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 ] + 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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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 + %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: + %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: + %t72 = load i1, ptr %a23 + %t73 = xor i1 %t72, true + br i1 %t73, label %then5964, label %endif5966 +then5964: + %t74 = load ptr, ptr %a1 + %t75 = load { ptr, i64, i64 }, ptr %a2 + %t76 = load %S.gen.Val, ptr %a6 + %t77 = load %S.gen.Val, ptr %a10 + %t78 = load %S.ast.Node, ptr %a11 + call void @finch.gen.badOperands(ptr %t74, { ptr, i64, i64 } %t75, %S.gen.Val %t76, %S.gen.Val %t77, %S.ast.Node %t78) + br label %endif5966 +endif5966: + store { ptr, i64, i64 } { ptr @.str.3924, i64 2, i64 0 }, ptr %a79 + %t80 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t80, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.3925, i64 2, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp ne i32 %t83, 0 + br i1 %t84, label %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 + 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 + %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 + %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 + 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 + 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 + 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) + 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 + 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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %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 + 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 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 + store { ptr, i64, i64 } { ptr @.str.3986, i64 2, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 + store { ptr, i64, i64 } { ptr @.str.3987, 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 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 + store { ptr, i64, i64 } { ptr @.str.3989, i64 1, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 + store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %t10 + %t11 = insertvalue { ptr, i64, i64 } undef, ptr %t4, 0 + %t12 = insertvalue { ptr, i64, i64 } %t11, i64 6, 1 + %t13 = insertvalue { ptr, i64, i64 } %t12, i64 6, 2 + store { ptr, i64, i64 } %t13, ptr %a14 + %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 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 + store { ptr, i64, i64 } { ptr @.str.3992, i64 2, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 + store { ptr, i64, i64 } { ptr @.str.3993, 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 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 + store { ptr, i64, i64 } { ptr @.str.3995, i64 3, i64 0 }, ptr %t21 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 + store { ptr, i64, i64 } { ptr @.str.3996, i64 3, i64 0 }, ptr %t22 + %t23 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 + %t24 = insertvalue { ptr, i64, i64 } %t23, i64 6, 1 + %t25 = insertvalue { ptr, i64, i64 } %t24, i64 6, 2 + store { ptr, i64, i64 } %t25, ptr %a26 + %t27 = load i1, ptr %a2 + br i1 %t27, label %then6023, label %endif6025 +then6023: + %t28 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t29 = call ptr @finch_alloc(i64 %t28) + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 + store { ptr, i64, i64 } { ptr @.str.3997, 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 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 + store { ptr, i64, i64 } { ptr @.str.3999, i64 3, i64 0 }, ptr %t32 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 + store { ptr, i64, i64 } { ptr @.str.4000, 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 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 + store { ptr, i64, i64 } { ptr @.str.4002, i64 3, i64 0 }, ptr %t35 + %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 + %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 + %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 + store { ptr, i64, i64 } %t38, ptr %a26 + br label %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) + 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 +} + +define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a35 = 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 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a70 = 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 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t4 = load { ptr, i64, i64 }, ptr %t3 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.4004, i64 2, i64 0 }, ptr %a11 + %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) + %t13 = icmp ne i32 %t12, 0 + br label %logic.from6033 +logic.from6033: + br i1 %t13, label %logic.end6035, label %logic.rhs6034 +logic.rhs6034: + %t14 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.4005, i64 2, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br label %logic.rend6036 +logic.rend6036: + br label %logic.end6035 +logic.end6035: + %t19 = phi i1 [ true, %logic.from6033 ], [ %t18, %logic.rend6036 ] + br i1 %t19, label %then6037, label %endif6039 +then6037: + %t20 = load ptr, ptr %a1 + %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t22 = load { ptr, i64, i64 }, ptr %t21 + %t23 = extractvalue { ptr, i64, i64 } %t22, 1 + %t24 = icmp uge i64 0, %t23 + br i1 %t24, label %range6040, label %inrange6041 +range6040: + call void @finch_panic_index(ptr @.str.4006, i64 3227, i64 0, i64 %t23) + unreachable +inrange6041: + %t25 = extractvalue { ptr, i64, i64 } %t22, 0 + %t26 = getelementptr inbounds %S.ast.Node, ptr %t25, i64 0 + %t27 = load %S.ast.Node, ptr %t26 + %t28 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t20, %S.ast.Node %t27) + store { ptr, i64, i64 } %t28, ptr %a29 + %t30 = load ptr, ptr %a1 + %t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.4007, i64 10, i64 0 }) + store { ptr, i64, i64 } %t31, ptr %a32 + %t33 = load ptr, ptr %a1 + %t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.4008, i64 9, i64 0 }) + store { ptr, i64, i64 } %t34, ptr %a35 + %t36 = load ptr, ptr %a1 + %t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.4009, i64 9, i64 0 }) + store { ptr, i64, i64 } %t37, ptr %a38 + %t39 = load ptr, ptr %a1 + %t40 = load { ptr, i64, i64 }, ptr %a32 + call void @finch.gen.br(ptr %t39, { ptr, i64, i64 } %t40) + %t41 = load ptr, ptr %a1 + %t42 = load { ptr, i64, i64 }, ptr %a32 + 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 + %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) + %t47 = icmp ne i32 %t46, 0 + br i1 %t47, label %then6042, label %else6043 +then6042: + %t48 = load ptr, ptr %a1 + %t49 = load { ptr, i64, i64 }, ptr %a29 + %t50 = load { ptr, i64, i64 }, ptr %a35 + %t51 = load { ptr, i64, i64 }, ptr %a38 + call void @finch.gen.condBr(ptr %t48, { ptr, i64, i64 } %t49, { ptr, i64, i64 } %t50, { ptr, i64, i64 } %t51) + br label %endif6044 +else6043: + %t52 = load ptr, ptr %a1 + %t53 = load { ptr, i64, i64 }, ptr %a29 + %t54 = load { ptr, i64, i64 }, ptr %a38 + %t55 = load { ptr, i64, i64 }, ptr %a35 + call void @finch.gen.condBr(ptr %t52, { ptr, i64, i64 } %t53, { ptr, i64, i64 } %t54, { ptr, i64, i64 } %t55) + br label %endif6044 +endif6044: + %t56 = load ptr, ptr %a1 + %t57 = load { ptr, i64, i64 }, ptr %a35 + call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) + %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 1, %t61 + br i1 %t62, label %range6045, label %inrange6046 +range6045: + call void @finch_panic_index(ptr @.str.4011, i64 3239, i64 1, i64 %t61) + unreachable +inrange6046: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 1 + %t65 = load %S.ast.Node, ptr %t64 + %t66 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t58, %S.ast.Node %t65) + store { ptr, i64, i64 } %t66, ptr %a67 + %t68 = load ptr, ptr %a1 + %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.4012, i64 10, i64 0 }) + store { ptr, i64, i64 } %t69, ptr %a70 + %t71 = load ptr, ptr %a1 + %t72 = load { ptr, i64, i64 }, ptr %a70 + call void @finch.gen.br(ptr %t71, { ptr, i64, i64 } %t72) + %t73 = load ptr, ptr %a1 + %t74 = load { ptr, i64, i64 }, ptr %a70 + call void @finch.gen.label(ptr %t73, { ptr, i64, i64 } %t74) + %t75 = load ptr, ptr %a1 + %t76 = load { ptr, i64, i64 }, ptr %a38 + call void @finch.gen.br(ptr %t75, { ptr, i64, i64 } %t76) + %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 + %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 + %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 + %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) + unreachable +inrange6053: + %t141 = extractvalue { ptr, i64, i64 } %t138, 0 + %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1 + %t143 = load %S.ast.Node, ptr %t142 + %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 +} + +define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a5 = alloca %S.ast.Type, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a171 = 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 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = 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 + %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 + %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 + 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 }) + 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 + %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) + %t11 = icmp ne i32 %t10, 0 + br i1 %t11, label %then6077, label %else6078 +then6077: + %t12 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 + %t13 = load { ptr, i64, i64 }, ptr %t12 + %t14 = extractvalue { ptr, i64, i64 } %t13, 1 + %t15 = icmp uge i64 0, %t14 + br i1 %t15, label %range6080, label %inrange6081 +range6080: + call void @finch_panic_index(ptr @.str.4032, i64 3262, i64 0, i64 %t14) + unreachable +inrange6081: + %t16 = extractvalue { ptr, i64, i64 } %t13, 0 + %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 + %t18 = load %S.ast.Type, ptr %t17 + 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 + 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) + 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 + 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 + 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 +} + +define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Place, ptr %src + store %S.gen.Place %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Place, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Place, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Place, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Place, ptr %src, i32 0, i32 1 + call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) + ret void +} + +define internal %S.gen.Place @finch.gen.place(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %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 + 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 + %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: + %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: + %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 } %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 + 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 +} + +define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.cimport.CConst, ptr %src + store %S.cimport.CConst %t1, ptr %dst + %t2 = getelementptr inbounds %S.cimport.CConst, ptr %dst, i32 0, i32 3 + %t3 = getelementptr inbounds %S.cimport.CConst, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t2, ptr %t3) + ret void +} + +define internal %S.gen.Ref @finch.gen.ref(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca i64, align 16 + %a23 = 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 + %a43 = alloca %S.cimport.CConst, align 16 + %a44 = alloca %S.cimport.CConst, align 16 + %a46 = alloca %S.cimport.CConst, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a76 = 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 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca %S.ast.Type, align 16 + %a338 = alloca %S.ast.Type, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i1 %p2, ptr %a3 + %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t5 = load { ptr, i64, i64 }, ptr %t4 + store { ptr, i64, i64 } %t5, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4057, i64 3, i64 0 }, ptr %a7 + %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) + %t9 = icmp ne i32 %t8, 0 + br i1 %t9, label %then6111, label %endif6113 +then6111: + %t10 = load ptr, ptr %a1 + %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t12 = load { ptr, i64, i64 }, ptr %t11 + %t13 = call i64 @finch.gen.lookup(ptr %t10, { ptr, i64, i64 } %t12) + 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: + %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) + unreachable +ok6118: + %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24 + %t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1 + %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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: + %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) + unreachable +ok6124: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24 + %t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1 + %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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: + 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) + unreachable +map.found6126: + %t38 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t30, i32 0, i32 0 + %t39 = load ptr, ptr %t38 + %t40 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t39, i64 %t34 + %t41 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t40, i32 0, i32 2 + %t42 = load %S.cimport.CConst, ptr %t41 + store %S.cimport.CConst %t42, ptr %a43 + call void @finch.copy.S_cimport_CConst(ptr %a44, ptr %a43) + %t45 = load %S.cimport.CConst, ptr %a44 + 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: + %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 }) + %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 + %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 + %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 + ret %S.gen.Ref %t57 +endif6129: + %t58 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t59 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 1 + %t60 = load i64, ptr %t59 + call void @finch_str_from_int(ptr %a61, i64 %t60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t62, 0 + %t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4064, i64 3, i64 0 }) + %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 + %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 + %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 + ret %S.gen.Ref %t67 +endif6122: + %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: + %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) + unreachable +ok6134: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24 + %t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2 + %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t75 = load { ptr, i64, i64 }, ptr %t74 + store { ptr, i64, i64 } %t75, ptr %a76 + %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: + %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) + unreachable +ok6140: + %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24 + %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 + store { ptr, i64, i64 } { ptr @.str.4069, i64 7, i64 0 }, ptr %a85 + %t86 = call i64 @finch_map_find(ptr %t84, ptr %a85, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t87 = icmp sge i64 %t86, 0 + br label %logic.rend6141 +logic.rend6141: + br label %logic.end6138 +logic.end6138: + %t88 = phi i1 [ false, %logic.from6136 ], [ %t87, %logic.rend6141 ] + br label %logic.from6142 +logic.from6142: + br i1 %t88, label %logic.rhs6143, label %logic.end6144 +logic.rhs6143: + %t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t90 = load { ptr, i64, i64 }, ptr %t89 + store { ptr, i64, i64 } %t90, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.4070, i64 5, i64 0 }, ptr %a92 + %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) + %t94 = icmp ne i32 %t93, 0 + br label %logic.from6145 +logic.from6145: + br i1 %t94, label %logic.end6147, label %logic.rhs6146 +logic.rhs6146: + %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t96 = load { ptr, i64, i64 }, ptr %t95 + store { ptr, i64, i64 } %t96, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4071, i64 6, i64 0 }, ptr %a98 + %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) + %t100 = icmp ne i32 %t99, 0 + br label %logic.rend6148 +logic.rend6148: + br label %logic.end6147 +logic.end6147: + %t101 = phi i1 [ true, %logic.from6145 ], [ %t100, %logic.rend6148 ] + br label %logic.from6149 +logic.from6149: + br i1 %t101, label %logic.end6151, label %logic.rhs6150 +logic.rhs6150: + %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.4072, i64 6, i64 0 }, ptr %a105 + %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) + %t107 = icmp ne i32 %t106, 0 + br label %logic.rend6152 +logic.rend6152: + br label %logic.end6151 +logic.end6151: + %t108 = phi i1 [ true, %logic.from6149 ], [ %t107, %logic.rend6152 ] + br label %logic.rend6153 +logic.rend6153: + br label %logic.end6144 +logic.end6144: + %t109 = phi i1 [ false, %logic.from6142 ], [ %t108, %logic.rend6153 ] + br i1 %t109, label %then6154, label %endif6156 +then6154: + store { ptr, i64, i64 } { ptr @.str.4073, i64 1, i64 0 }, ptr %a110 + %t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t112 = load { ptr, i64, i64 }, ptr %t111 + store { ptr, i64, i64 } %t112, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.4074, i64 5, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %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 + %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 + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 + %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 } %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 + 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 } %t285, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a288 + call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) + %t289 = load { ptr, i64, i64 }, ptr %a286 + call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } %t289) + br label %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 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t343, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.4105, i64 6, i64 0 }, ptr %a345 + %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) + %t347 = icmp ne i32 %t346, 0 + br i1 %t347, label %then6196, label %endif6198 +then6196: + %t348 = load ptr, ptr %a1 + %t349 = load %S.ast.Node, ptr %a2 + %t350 = load i1, ptr %a3 + %t351 = call %S.gen.Ref @finch.gen.member(ptr %t348, %S.ast.Node %t349, i1 %t350) + ret %S.gen.Ref %t351 +endif6198: + %t352 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t353 = load { ptr, i64, i64 }, ptr %t352 + store { ptr, i64, i64 } %t353, ptr %a354 + store { ptr, i64, i64 } { ptr @.str.4106, i64 5, i64 0 }, ptr %a355 + %t356 = call i32 @finch_str_eq(ptr %a354, ptr %a355) + %t357 = icmp ne i32 %t356, 0 + br i1 %t357, label %then6199, label %endif6201 +then6199: + %t358 = load ptr, ptr %a1 + %t359 = load %S.ast.Node, ptr %a2 + %t360 = load i1, ptr %a3 + %t361 = call %S.gen.Ref @finch.gen.index(ptr %t358, %S.ast.Node %t359, i1 %t360) + ret %S.gen.Ref %t361 +endif6201: + %t362 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t363 = load ptr, ptr %a1 + %t364 = load %S.ast.Node, ptr %a2 + %t365 = call %S.gen.Val @finch.gen.expr(ptr %t363, %S.ast.Node %t364) + %t366 = insertvalue %S.gen.Ref %t362, %S.gen.Val %t365, 2 + ret %S.gen.Ref %t366 +} + +define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a36 = 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 + %a50 = 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 + %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 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4108, i64 1, i64 0 }, ptr %a10 + %t11 = call i32 @finch_str_starts(ptr %a8, ptr %a10) + %t12 = icmp ne i32 %t11, 0 + br i1 %t12, label %then6202, label %endif6204 +then6202: + %t13 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4109, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a6 + br label %endif6204 +endif6204: + %t18 = load { ptr, i64, i64 }, 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 +} + +define internal i64 @finch.gen.enumNamed(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = 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.4120, i64 3, i64 0 }, ptr %a6 + %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) + %t8 = icmp ne i32 %t7, 0 + br label %logic.from6214 +logic.from6214: + br i1 %t8, label %logic.rhs6215, label %logic.end6216 +logic.rhs6215: + %t9 = load ptr, ptr %a1 + %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call i64 @finch.gen.lookup(ptr %t9, { ptr, i64, i64 } %t11) + %t13 = icmp slt i64 %t12, 0 + br label %logic.rend6217 +logic.rend6217: + br label %logic.end6216 +logic.end6216: + %t14 = phi i1 [ false, %logic.from6214 ], [ %t13, %logic.rend6217 ] + br i1 %t14, label %then6218, label %endif6220 +then6218: + %t15 = load ptr, ptr %a1 + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic6221, label %ok6222 +panic6221: + call void @finch_panic(ptr @.str.4121, i64 3377, ptr @.str.4122) + unreachable +ok6222: + %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13 + %t19 = load { ptr, i64, i64 }, ptr %t18 + %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t21 = load { ptr, i64, i64 }, ptr %t20 + %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) + ret i64 %t22 +endif6220: + %t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.4123, i64 6, i64 0 }, ptr %a26 + %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) + %t28 = icmp ne i32 %t27, 0 + br label %logic.from6223 +logic.from6223: + br i1 %t28, label %logic.rhs6224, label %logic.end6225 +logic.rhs6224: + %t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t30 = load { ptr, i64, i64 }, ptr %t29 + %t31 = extractvalue { ptr, i64, i64 } %t30, 1 + %t32 = icmp uge i64 0, %t31 + br i1 %t32, label %range6226, label %inrange6227 +range6226: + call void @finch_panic_index(ptr @.str.4124, i64 3379, i64 0, i64 %t31) + unreachable +inrange6227: + %t33 = extractvalue { ptr, i64, i64 } %t30, 0 + %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 0 + %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i32 0, i32 0 + %t36 = load { ptr, i64, i64 }, ptr %t35 + store { ptr, i64, i64 } %t36, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4125, i64 3, i64 0 }, ptr %a38 + %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) + %t40 = icmp ne i32 %t39, 0 + br label %logic.rend6228 +logic.rend6228: + br label %logic.end6225 +logic.end6225: + %t41 = phi i1 [ false, %logic.from6223 ], [ %t40, %logic.rend6228 ] + br label %logic.from6229 +logic.from6229: + br i1 %t41, label %logic.rhs6230, label %logic.end6231 +logic.rhs6230: + %t42 = load ptr, ptr %a1 + %t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t44 = load { ptr, i64, i64 }, ptr %t43 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 0, %t45 + br i1 %t46, label %range6232, label %inrange6233 +range6232: + call void @finch_panic_index(ptr @.str.4126, i64 3379, i64 0, i64 %t45) + unreachable +inrange6233: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0 + %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i32 0, i32 1 + %t50 = load { ptr, i64, i64 }, ptr %t49 + %t51 = call i64 @finch.gen.lookup(ptr %t42, { ptr, i64, i64 } %t50) + %t52 = icmp slt i64 %t51, 0 + br label %logic.rend6234 +logic.rend6234: + br label %logic.end6231 +logic.end6231: + %t53 = phi i1 [ false, %logic.from6229 ], [ %t52, %logic.rend6234 ] + br label %logic.from6235 +logic.from6235: + br i1 %t53, label %logic.rhs6236, label %logic.end6237 +logic.rhs6236: + %t54 = load ptr, ptr %a1 + %t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t56 = load { ptr, i64, i64 }, ptr %t55 + %t57 = extractvalue { ptr, i64, i64 } %t56, 1 + %t58 = icmp uge i64 0, %t57 + br i1 %t58, label %range6238, label %inrange6239 +range6238: + call void @finch_panic_index(ptr @.str.4127, i64 3379, i64 0, i64 %t57) + unreachable +inrange6239: + %t59 = extractvalue { ptr, i64, i64 } %t56, 0 + %t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 0 + %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i32 0, i32 1 + %t62 = load { ptr, i64, i64 }, ptr %t61 + %t63 = call i1 @finch.gen.imports(ptr %t54, { ptr, i64, i64 } %t62) + br label %logic.rend6240 +logic.rend6240: + br label %logic.end6237 +logic.end6237: + %t64 = phi i1 [ false, %logic.from6235 ], [ %t63, %logic.rend6240 ] + br i1 %t64, label %then6241, label %endif6243 +then6241: + %t65 = load ptr, ptr %a1 + %t66 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t67 = load { ptr, i64, i64 }, ptr %t66 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 0, %t68 + br i1 %t69, label %range6244, label %inrange6245 +range6244: + call void @finch_panic_index(ptr @.str.4128, i64 3380, i64 0, i64 %t68) + unreachable +inrange6245: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 + %t72 = getelementptr inbounds %S.ast.Node, ptr %t71, i32 0, i32 1 + %t73 = load { ptr, i64, i64 }, ptr %t72 + %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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: + ret i64 -1 +} + +define internal %S.gen.Val @finch.gen.enumValue(ptr %p0, %S.ast.Node %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a14 = alloca %S.gen.EnumDef, align 16 + %a15 = alloca %S.gen.EnumDef, align 16 + %a17 = alloca %S.gen.EnumDef, align 16 + %a22 = alloca i64, align 16 + %a25 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca 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 + %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 + %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 + %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 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i64 %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic6246, label %ok6247 +panic6246: + call void @finch_panic(ptr @.str.4129, i64 3387, ptr @.str.4130) + unreachable +ok6247: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 + %t7 = load i64, ptr %a3 + %t8 = load { ptr, i64, i64 }, ptr %t6 + %t9 = extractvalue { ptr, i64, i64 } %t8, 1 + %t10 = icmp uge i64 %t7, %t9 + br i1 %t10, label %range6248, label %inrange6249 +range6248: + call void @finch_panic_index(ptr @.str.4131, i64 3387, i64 %t7, i64 %t9) + unreachable +inrange6249: + %t11 = extractvalue { ptr, i64, i64 } %t8, 0 + %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 + %t13 = load %S.gen.EnumDef, ptr %t12 + store %S.gen.EnumDef %t13, ptr %a14 + call void @finch.copy.S_gen_EnumDef(ptr %a15, ptr %a14) + %t16 = load %S.gen.EnumDef, ptr %a15 + store %S.gen.EnumDef %t16, ptr %a17 + %t18 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i32 0, i32 1 + %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store i64 -1, ptr %a22 + %t23 = load i64, ptr %t19 + %t24 = load ptr, ptr %t18 + store i64 0, ptr %a25 + br label %find.cond6250 +find.cond6250: + %t26 = load i64, ptr %a25 + %t27 = icmp slt i64 %t26, %t23 + br i1 %t27, label %find.body6251, label %find.end6254 +find.body6251: + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i64 %t26 + %t29 = load { ptr, i64, i64 }, ptr %t28 + store { ptr, i64, i64 } %t29, ptr %a30 + store { ptr, i64, i64 } %t21, ptr %a31 + %t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31) + %t33 = icmp ne i32 %t32, 0 + br i1 %t33, label %find.hit6252, label %find.next6253 +find.hit6252: + store i64 %t26, ptr %a22 + br label %find.end6254 +find.next6253: + %t34 = add i64 %t26, 1 + store i64 %t34, ptr %a25 + br label %find.cond6250 +find.end6254: + %t35 = load i64, ptr %a22 + store i64 %t35, ptr %a36 + %t37 = load i64, ptr %a36 + %t38 = icmp slt i64 %t37, 0 + br i1 %t38, label %then6255, label %endif6257 +then6255: + %t39 = load ptr, ptr %a1 + %t40 = load %S.ast.Node, ptr %a2 + %t41 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.4132, i64 9, i64 0 }, ptr %a44 + store { ptr, i64, i64 } %t42, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a43 + store { ptr, i64, i64 } %t46, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4133, i64 17, i64 0 }, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a47 + %t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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) + unreachable +inrange6259: + %t107 = extractvalue { ptr, i64, i64 } %t104, 0 + %t108 = getelementptr inbounds i64, ptr %t107, i64 %t103 + %t109 = load i64, ptr %t108 + call void @finch_str_from_int(ptr %a110, i64 %t109) + %t111 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t101, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.4141, i64 4, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a116 + call void @finch.gen.noteRef(ptr %t74, %S.ast.Node %t75, i64 %t78, i64 %t81, { ptr, i64, i64 } %t119, { ptr, i64, i64 } { ptr @.str.4142, i64 0, i64 0 }, i64 0, i64 0) + %t120 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t121 = load i64, ptr %a36 + %t122 = load { ptr, i64, i64 }, ptr %t120 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range6260, label %inrange6261 +range6260: + call void @finch_panic_index(ptr @.str.4143, i64 3393, i64 %t121, i64 %t123) + unreachable +inrange6261: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds i64, ptr %t125, i64 %t121 + %t127 = load i64, ptr %t126 + call void @finch_str_from_int(ptr %a128, i64 %t127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + %t130 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t129, 0 + %t131 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4144, i64 4, i64 0 }, 0 + %t132 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + call void @finch_str_copy(ptr %a135, ptr %a134) + %t136 = load { ptr, i64, i64 }, ptr %a135 + %t137 = insertvalue %S.ast.Type %t131, { ptr, i64, i64 } %t136, 2 + %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch_str_copy(ptr %a141, ptr %a140) + %t142 = load { ptr, i64, i64 }, ptr %a141 + %t143 = insertvalue %S.ast.Type %t137, { ptr, i64, i64 } %t142, 3 + %t144 = insertvalue %S.gen.Val %t130, %S.ast.Type %t143, 1 + ret %S.gen.Val %t144 +} + +define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i1, align 16 + %a13 = alloca i64, align 16 + %a35 = alloca %S.gen.Ref, align 16 + %a39 = alloca %S.ast.Type, align 16 + %a40 = alloca %S.ast.Type, align 16 + %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 + %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 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a436 = 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 + %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 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = 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 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a493 = 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 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a542 = alloca 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 + %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 + %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 + %a608 = alloca { ptr, i64, i64 }, align 16 + %a612 = alloca { ptr, i64, i64 }, align 16 + %a613 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 + %a616 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a626 = alloca { ptr, i64, i64 }, align 16 + %a627 = alloca { ptr, i64, i64 }, align 16 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 + %a632 = 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 + %a660 = 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 + %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 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca { ptr, i64, i64 }, align 16 + %a693 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a718 = alloca %S.ast.Type, align 16 + %a719 = alloca %S.ast.Type, align 16 + %a722 = alloca %S.gen.Val, align 16 + %a736 = alloca %S.ast.Type, align 16 + %a737 = alloca %S.ast.Type, align 16 + %a743 = alloca %S.gen.Val, align 16 + %a744 = alloca %S.gen.Val, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i1 %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange6263: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %t12 = call i64 @finch.gen.enumNamed(ptr %t4, %S.ast.Node %t11) + store i64 %t12, ptr %a13 + %t14 = load i64, ptr %a13 + %t15 = icmp sge i64 %t14, 0 + br i1 %t15, label %then6264, label %endif6266 +then6264: + %t16 = load i1, ptr %a3 + br i1 %t16, label %then6267, label %endif6269 +then6267: + %t17 = load ptr, ptr %a1 + %t18 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.4146, i64 37, i64 0 }) + br label %endif6269 +endif6269: + %t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t20 = load ptr, ptr %a1 + %t21 = load %S.ast.Node, ptr %a2 + %t22 = load i64, ptr %a13 + %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: + %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) + unreachable +inrange6271: + %t30 = extractvalue { ptr, i64, i64 } %t27, 0 + %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 + %t32 = load %S.ast.Node, ptr %t31 + %t33 = load i1, ptr %a3 + %t34 = call %S.gen.Ref @finch.gen.ref(ptr %t25, %S.ast.Node %t32, i1 %t33) + store %S.gen.Ref %t34, ptr %a35 + %t36 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t37 = getelementptr inbounds %S.gen.Val, ptr %t36, i32 0, i32 1 + %t38 = load %S.ast.Type, ptr %t37 + store %S.ast.Type %t38, ptr %a39 + call void @finch.copy.S_ast_Type(ptr %a40, ptr %a39) + %t41 = load %S.ast.Type, ptr %a40 + 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: + %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 + 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 + 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) + 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) + 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) + 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 + %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 + %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 + 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) + 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 + %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) + 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 + 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) + 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 + store { ptr, i64, i64 } %t615, ptr %a617 + store { ptr, i64, i64 } { ptr @.str.4217, i64 4, i64 0 }, ptr %a618 + call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) + %t619 = load { ptr, i64, i64 }, ptr %a616 + call void @finch.gen.noteRef(ptr %t592, %S.ast.Node %t593, i64 %t596, i64 %t599, { ptr, i64, i64 } %t619, { ptr, i64, i64 } { ptr @.str.4218, i64 0, i64 0 }, i64 0, i64 0) + %t620 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t621 = load i1, ptr %t620 + br i1 %t621, label %then6395, label %endif6397 +then6395: + %t622 = load ptr, ptr %a1 + %t623 = load ptr, ptr %a1 + %t624 = load %S.ast.Type, ptr %a42 + %t625 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t623, %S.ast.Type %t624) + store { ptr, i64, i64 } { ptr @.str.4219, i64 23, i64 0 }, ptr %a627 + store { ptr, i64, i64 } %t625, ptr %a628 + call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } %t629, ptr %a631 + store { ptr, i64, i64 } { ptr @.str.4220, i64 6, i64 0 }, ptr %a632 + call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) + %t633 = load { ptr, i64, i64 }, ptr %a630 + %t634 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t635 = getelementptr inbounds %S.gen.Place, ptr %t634, i32 0, i32 0 + %t636 = load { ptr, i64, i64 }, ptr %t635 + store { ptr, i64, i64 } %t633, ptr %a638 + store { ptr, i64, i64 } %t636, ptr %a639 + call void @finch_str_concat(ptr %a637, ptr %a638, ptr %a639) + %t640 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } %t640, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4221, i64 13, i64 0 }, ptr %a643 + call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a641 + %t645 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 + %t646 = load i64, ptr %a542 + %t647 = load { ptr, i64, i64 }, ptr %t645 + %t648 = extractvalue { ptr, i64, i64 } %t647, 1 + %t649 = icmp uge i64 %t646, %t648 + br i1 %t649, label %range6398, label %inrange6399 +range6398: + call void @finch_panic_index(ptr @.str.4222, i64 3489, i64 %t646, i64 %t648) + unreachable +inrange6399: + %t650 = extractvalue { ptr, i64, i64 } %t647, 0 + %t651 = getelementptr inbounds i64, ptr %t650, i64 %t646 + %t652 = load i64, ptr %t651 + call void @finch_str_from_int(ptr %a653, i64 %t652) + %t654 = load { ptr, i64, i64 }, ptr %a653 + store { ptr, i64, i64 } %t644, ptr %a656 + store { ptr, i64, i64 } %t654, ptr %a657 + call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) + %t658 = load { ptr, i64, i64 }, ptr %a655 + %t659 = call { ptr, i64, i64 } @finch.gen.op(ptr %t622, { ptr, i64, i64 } %t658) + store { ptr, i64, i64 } %t659, ptr %a660 + %t661 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t662 = load { ptr, i64, i64 }, ptr %a660 + store { ptr, i64, i64 } %t662, ptr %a663 + call void @finch_str_copy(ptr %a664, ptr %a663) + %t665 = load { ptr, i64, i64 }, ptr %a664 + %t666 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t665, 0 + %t667 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t667, ptr %a668 + call void @finch.copy.S_ast_Type(ptr %a669, ptr %a668) + %t670 = load %S.ast.Type, ptr %a669 + %t671 = insertvalue %S.gen.Place %t666, %S.ast.Type %t670, 1 + %t672 = insertvalue %S.gen.Ref %t661, %S.gen.Place %t671, 1 + ret %S.gen.Ref %t672 +endif6397: + %t673 = load ptr, ptr %a1 + %t674 = load ptr, ptr %a1 + %t675 = load %S.ast.Type, ptr %a42 + %t676 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t674, %S.ast.Type %t675) + store { ptr, i64, i64 } { ptr @.str.4223, i64 13, i64 0 }, ptr %a678 + store { ptr, i64, i64 } %t676, ptr %a679 + call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) + %t680 = load { ptr, i64, i64 }, ptr %a677 + store { ptr, i64, i64 } %t680, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.4224, i64 1, i64 0 }, ptr %a683 + call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) + %t684 = load { ptr, i64, i64 }, ptr %a681 + %t685 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t686 = getelementptr inbounds %S.gen.Val, ptr %t685, i32 0, i32 0 + %t687 = load { ptr, i64, i64 }, ptr %t686 + store { ptr, i64, i64 } %t684, ptr %a689 + store { ptr, i64, i64 } %t687, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + %t691 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t691, ptr %a693 + store { ptr, i64, i64 } { ptr @.str.4225, i64 2, i64 0 }, ptr %a694 + call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694) + %t695 = load { ptr, i64, i64 }, ptr %a692 + %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 + %t697 = load i64, ptr %a542 + %t698 = load { ptr, i64, i64 }, ptr %t696 + %t699 = extractvalue { ptr, i64, i64 } %t698, 1 + %t700 = icmp uge i64 %t697, %t699 + br i1 %t700, label %range6400, label %inrange6401 +range6400: + call void @finch_panic_index(ptr @.str.4226, i64 3492, i64 %t697, i64 %t699) + unreachable +inrange6401: + %t701 = extractvalue { ptr, i64, i64 } %t698, 0 + %t702 = getelementptr inbounds i64, ptr %t701, i64 %t697 + %t703 = load i64, ptr %t702 + call void @finch_str_from_int(ptr %a704, i64 %t703) + %t705 = load { ptr, i64, i64 }, ptr %a704 + store { ptr, i64, i64 } %t695, ptr %a707 + store { ptr, i64, i64 } %t705, ptr %a708 + call void @finch_str_concat(ptr %a706, ptr %a707, ptr %a708) + %t709 = load { ptr, i64, i64 }, ptr %a706 + %t710 = call { ptr, i64, i64 } @finch.gen.op(ptr %t673, { ptr, i64, i64 } %t709) + store { ptr, i64, i64 } %t710, ptr %a711 + %t712 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t712, ptr %a713 + call void @finch_str_copy(ptr %a714, ptr %a713) + %t715 = load { ptr, i64, i64 }, ptr %a714 + %t716 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t715, 0 + %t717 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t717, ptr %a718 + call void @finch.copy.S_ast_Type(ptr %a719, ptr %a718) + %t720 = load %S.ast.Type, ptr %a719 + %t721 = insertvalue %S.gen.Val %t716, %S.ast.Type %t720, 1 + store %S.gen.Val %t721, ptr %a722 + %t723 = load ptr, ptr %a1 + %t724 = load %S.ast.Type, ptr %a591 + %t725 = call i1 @finch.gen.owning(ptr %t723, %S.ast.Type %t724) + br label %logic.from6402 +logic.from6402: + br i1 %t725, label %logic.rhs6403, label %logic.end6404 +logic.rhs6403: + %t726 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t727 = getelementptr inbounds %S.gen.Val, ptr %t726, i32 0, i32 2 + %t728 = load i1, ptr %t727 + br label %logic.rend6405 +logic.rend6405: + br label %logic.end6404 +logic.end6404: + %t729 = phi i1 [ false, %logic.from6402 ], [ %t728, %logic.rend6405 ] + br i1 %t729, label %then6406, label %endif6408 +then6406: + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a711 + %t732 = load %S.ast.Type, ptr %a591 + %t733 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t730, { ptr, i64, i64 } %t731, %S.ast.Type %t732) + %t734 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t733, 0 + %t735 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t735, ptr %a736 + call void @finch.copy.S_ast_Type(ptr %a737, ptr %a736) + %t738 = load %S.ast.Type, ptr %a737 + %t739 = insertvalue %S.gen.Val %t734, %S.ast.Type %t738, 1 + %t740 = insertvalue %S.gen.Val %t739, i1 true, 2 + store %S.gen.Val %t740, ptr %a722 + br label %endif6408 +endif6408: + %t741 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t742 = load %S.gen.Val, ptr %a722 + store %S.gen.Val %t742, ptr %a743 + call void @finch.copy.S_gen_Val(ptr %a744, ptr %a743) + %t745 = load %S.gen.Val, ptr %a744 + %t746 = insertvalue %S.gen.Ref %t741, %S.gen.Val %t745, 2 + ret %S.gen.Ref %t746 +} + +define internal %S.gen.Ref @finch.gen.index(ptr %p0, %S.ast.Node %p1, i1 %p2) { +entry: + %a1 = alloca ptr, align 16 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i1 %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange6410: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 + %t11 = load %S.ast.Node, ptr %t10 + %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 + 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) + 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) + 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) + %t92 = load ptr, ptr %a1 + %t93 = load ptr, ptr %a1 + %t94 = load %S.ast.Type, ptr %a21 + %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) + store { ptr, i64, i64 } { ptr @.str.4235, i64 23, i64 0 }, ptr %a97 + store { ptr, i64, i64 } %t95, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.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) + 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) + 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 + 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.4245, i64 6, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + %t196 = load { ptr, i64, i64 }, ptr %a193 + %t197 = load { ptr, i64, i64 }, ptr %a65 + 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 + %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 + %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 + %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 +} + +define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca i64, align 16 + %a13 = alloca i64, align 16 + %a21 = 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 + %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 + %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 + %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 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load i64, ptr %a3 + %t10 = sub i64 %t8, %t9 + 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: + %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: + %t18 = load ptr, ptr %t12 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 + %t20 = load { ptr, i64, i64 }, ptr %t19 + store { ptr, i64, i64 } %t20, ptr %a21 + %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: + %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 } %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 + 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: + ret void +} + +define internal %S.gen.Val @finch.gen.strArg(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + 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 = 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 }) + %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) + ret %S.gen.Val %t11 +} + +define internal { ptr, i64, i64 } @finch.gen.strOut(ptr %p0) { +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 }) + ret { ptr, i64, i64 } %t3 +} + +define internal { ptr, i64, i64 } @finch.gen.numType({ 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 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca i64, align 16 + %a36 = alloca i64, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + 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 + %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: + %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 + %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: + %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 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 + store { ptr, i64, i64 } { ptr @.str.4276, i64 5, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 + store { ptr, i64, i64 } { ptr @.str.4277, 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 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 + store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 + store { ptr, i64, i64 } { ptr @.str.4280, 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 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 + store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t21 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 + store { ptr, i64, i64 } { ptr @.str.4283, 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 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 + store { ptr, i64, i64 } { ptr @.str.4285, i64 3, i64 0 }, ptr %t24 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 + store { ptr, i64, i64 } { ptr @.str.4286, 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 + %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 + store { ptr, i64, i64 } %t29, ptr %a30 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t32 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a33 + %t34 = load i64, ptr %t31 + %t35 = load ptr, ptr %a30 + store i64 0, ptr %a36 + br label %find.cond6491 +find.cond6491: + %t37 = load i64, ptr %a36 + %t38 = icmp slt i64 %t37, %t34 + br i1 %t38, label %find.body6492, label %find.end6495 +find.body6492: + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t37 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t40, ptr %a41 + store { ptr, i64, i64 } %t32, ptr %a42 + %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) + %t44 = icmp ne i32 %t43, 0 + br i1 %t44, label %find.hit6493, label %find.next6494 +find.hit6493: + store i64 %t37, ptr %a33 + br label %find.end6495 +find.next6494: + %t45 = add i64 %t37, 1 + store i64 %t45, ptr %a36 + br label %find.cond6491 +find.end6495: + %t46 = load i64, ptr %a33 + %t47 = icmp sge i64 %t46, 0 + br i1 %t47, label %then6496, label %endif6498 +then6496: + %t48 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t48, ptr %a49 + call void @finch_str_copy(ptr %a50, ptr %a49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + ret { ptr, i64, i64 } %t51 +endif6498: + ret { ptr, i64, i64 } { ptr @.str.4288, i64 0, i64 0 } +} + +define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a17 = alloca %S.gen.Val, align 16 + %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 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a53 = 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 + %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 + %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 { 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = 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 + %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 + %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 + %a478 = alloca { ptr, i64, i64 }, align 16 + %a479 = 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 + %a501 = 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 + %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 + %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 + %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 + %a572 = alloca %S.ast.Type, align 16 + %a573 = alloca %S.ast.Type, align 16 + %a580 = 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 + %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 + %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 + %a656 = alloca %S.gen.Val, align 16 + %a657 = 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 = load ptr, ptr %a1 + %t5 = load %S.ast.Node, ptr %a2 + %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %t6 + call void @finch.gen.checkArgs(ptr %t4, %S.ast.Node %t5, i64 0, i64 1, { ptr, i64, i64 } %t7) + %t8 = load ptr, ptr %a1 + %t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange6500: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 0 + %t15 = load %S.ast.Node, ptr %t14 + %t16 = call %S.gen.Val @finch.gen.expr(ptr %t8, %S.ast.Node %t15) + store %S.gen.Val %t16, ptr %a17 + %t18 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 1 + %t19 = load %S.ast.Type, ptr %t18 + store %S.ast.Type %t19, ptr %a20 + call void @finch.copy.S_ast_Type(ptr %a21, ptr %a20) + %t22 = load %S.ast.Type, ptr %a21 + store %S.ast.Type %t22, ptr %a23 + %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: + %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) + 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 + %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 + 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) + 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) + 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: + %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) + 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 + %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) + 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) + 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 }) + %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 + %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 + store { ptr, i64, i64 } %t492, ptr %a494 + store { ptr, i64, i64 } { ptr @.str.4356, i64 1, i64 0 }, ptr %a495 + call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a493 + %t497 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %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 + %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: + %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 + %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 + ret %S.gen.Val %t544 +endif6602: + %t545 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 + %t546 = load { ptr, i64, i64 }, ptr %t545 + store { ptr, i64, i64 } %t546, ptr %a547 + store { ptr, i64, i64 } { ptr @.str.4361, i64 3, i64 0 }, ptr %a548 + %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) + %t550 = icmp ne i32 %t549, 0 + br label %logic.from6603 +logic.from6603: + br i1 %t550, label %logic.rhs6604, label %logic.end6605 +logic.rhs6604: + %t551 = load %S.ast.Type, ptr %a23 + %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) + br label %logic.rend6606 +logic.rend6606: + br label %logic.end6605 +logic.end6605: + %t553 = phi i1 [ false, %logic.from6603 ], [ %t552, %logic.rend6606 ] + br i1 %t553, label %then6607, label %endif6609 +then6607: + %t554 = load ptr, ptr %a1 + %t555 = load ptr, ptr %a1 + %t556 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 + %t557 = load { ptr, i64, i64 }, ptr %t556 + %t558 = load %S.ast.Type, ptr %a23 + %t559 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.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 + 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 +} + +define internal i64 @finch.gen.sizeBytes(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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = 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 + %a52 = 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 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = 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 + %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 + %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) + %t8 = icmp ne i32 %t7, 0 + br i1 %t8, label %then6628, label %endif6630 +then6628: + %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) + unreachable +ok6632: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15 + %t12 = load ptr, ptr %a1 + %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t14 = load { ptr, i64, i64 }, ptr %t13 + %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t16 = load { ptr, i64, i64 }, ptr %t15 + %t17 = call i64 @finch.gen.findStruct(ptr %t12, { ptr, i64, i64 } %t14, { ptr, i64, i64 } %t16) + %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) + unreachable +inrange6634: + %t21 = extractvalue { ptr, i64, i64 } %t18, 0 + %t22 = getelementptr inbounds %S.gen.StructDef, ptr %t21, i64 %t17 + %t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i32 0, i32 9 + %t24 = load i64, ptr %t23 + ret i64 %t24 +endif6630: + %t25 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } %t26, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.4379, i64 5, i64 0 }, ptr %a28 + %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) + %t30 = icmp ne i32 %t29, 0 + br i1 %t30, label %then6635, label %endif6637 +then6635: + %t31 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 + %t32 = load i64, ptr %t31 + %t33 = load ptr, ptr %a1 + %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %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) + unreachable +inrange6639: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds %S.ast.Type, ptr %t38, i64 0 + %t40 = load %S.ast.Type, ptr %t39 + %t41 = call i64 @finch.gen.sizeBytes(ptr %t33, %S.ast.Type %t40) + %t42 = mul i64 %t32, %t41 + ret i64 %t42 +endif6637: + %t43 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t44 = load { ptr, i64, i64 }, ptr %t43 + store { ptr, i64, i64 } %t44, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4381, i64 3, i64 0 }, ptr %a46 + %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) + %t48 = icmp ne i32 %t47, 0 + br label %logic.from6640 +logic.from6640: + br i1 %t48, label %logic.end6642, label %logic.rhs6641 +logic.rhs6641: + %t49 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t50 = load { ptr, i64, i64 }, ptr %t49 + store { ptr, i64, i64 } %t50, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.4382, i64 3, i64 0 }, ptr %a52 + %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) + %t54 = icmp ne i32 %t53, 0 + br label %logic.rend6643 +logic.rend6643: + br label %logic.end6642 +logic.end6642: + %t55 = phi i1 [ true, %logic.from6640 ], [ %t54, %logic.rend6643 ] + br i1 %t55, label %then6644, label %endif6646 +then6644: + ret i64 8 +endif6646: + %t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t57 = load { ptr, i64, i64 }, ptr %t56 + store { ptr, i64, i64 } %t57, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.4383, i64 5, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br i1 %t61, label %then6647, label %endif6649 +then6647: + ret i64 8 +endif6649: + %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.4384, i64 3, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) + %t67 = icmp ne i32 %t66, 0 + br i1 %t67, label %then6650, label %endif6652 +then6650: + ret i64 4 +endif6652: + %t68 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t69 = load { ptr, i64, i64 }, ptr %t68 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4385, i64 4, i64 0 }, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp ne i32 %t72, 0 + br i1 %t73, label %then6653, label %endif6655 +then6653: + ret i64 1 +endif6655: + %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) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.leavesOf(ptr %p0, %S.ast.Type %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca %S.gen.StructDef, align 16 + %a27 = alloca %S.gen.StructDef, align 16 + %a29 = alloca %S.gen.StructDef, align 16 + %a33 = alloca i64, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca i64, align 16 + %a65 = alloca %S.gen.Leaf, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca i64, align 16 + %a94 = alloca i64, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca i64, align 16 + %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 + store { ptr, i64, i64 } zeroinitializer, 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.4386, i64 6, i64 0 }, ptr %a8 + %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) + %t10 = icmp ne i32 %t9, 0 + br i1 %t10, label %then6656, label %else6657 +then6656: + %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) + unreachable +ok6660: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15 + %t14 = load ptr, ptr %a1 + %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 + %t16 = load { ptr, i64, i64 }, ptr %t15 + %t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 + %t18 = load { ptr, i64, i64 }, ptr %t17 + %t19 = call i64 @finch.gen.findStruct(ptr %t14, { ptr, i64, i64 } %t16, { ptr, i64, i64 } %t18) + %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) + unreachable +inrange6662: + %t23 = extractvalue { ptr, i64, i64 } %t20, 0 + %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i64 %t19 + %t25 = load %S.gen.StructDef, ptr %t24 + store %S.gen.StructDef %t25, ptr %a26 + call void @finch.copy.S_gen_StructDef(ptr %a27, ptr %a26) + %t28 = load %S.gen.StructDef, ptr %a27 + store %S.gen.StructDef %t28, ptr %a29 + %t30 = getelementptr inbounds %S.gen.StructDef, ptr %a29, i32 0, i32 12 + %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: + %t34 = load i64, ptr %a33 + %t35 = icmp slt i64 %t34, %t32 + br i1 %t35, label %for.body6664, label %for.end6666 +for.body6664: + %t36 = load ptr, ptr %a1 + %t37 = getelementptr inbounds %S.gen.StructDef, ptr %a29, i32 0, i32 12 + %t38 = load i64, ptr %a33 + %t39 = load { ptr, i64, i64 }, ptr %t37 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range6667, label %inrange6668 +range6667: + call void @finch_panic_index(ptr @.str.4390, i64 3739, i64 %t38, i64 %t40) + unreachable +inrange6668: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 %t38 + %t44 = load %S.ast.Type, ptr %t43 + %t45 = load i64, ptr %a3 + %t46 = getelementptr inbounds %S.gen.StructDef, ptr %a29, i32 0, i32 4 + %t47 = load i64, ptr %a33 + %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) + unreachable +inrange6670: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds i64, ptr %t51, i64 %t47 + %t53 = load i64, ptr %t52 + %t54 = add i64 %t45, %t53 + %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: + %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: + %t62 = load ptr, ptr %a56 + %t63 = getelementptr inbounds %S.gen.Leaf, ptr %t62, i64 %t60 + %t64 = load %S.gen.Leaf, ptr %t63 + store %S.gen.Leaf %t64, ptr %a65 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t67 = load %S.gen.Leaf, ptr %a65 + %t68 = load i64, ptr %t66 + %t69 = add i64 %t68, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t69, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + %t70 = load ptr, ptr %a4 + %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: + %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: + %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: + %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 + %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) + %t81 = icmp ne i32 %t80, 0 + br i1 %t81, label %then6675, label %else6676 +then6675: + %t82 = load ptr, ptr %a1 + %t83 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t84 = load { ptr, i64, i64 }, ptr %t83 + %t85 = extractvalue { ptr, i64, i64 } %t84, 1 + %t86 = icmp uge i64 0, %t85 + br i1 %t86, label %range6678, label %inrange6679 +range6678: + call void @finch_panic_index(ptr @.str.4393, i64 3744, i64 0, i64 %t85) + unreachable +inrange6679: + %t87 = extractvalue { ptr, i64, i64 } %t84, 0 + %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i64 0 + %t89 = load %S.ast.Type, ptr %t88 + %t90 = call i64 @finch.gen.sizeBytes(ptr %t82, %S.ast.Type %t89) + store i64 %t90, ptr %a91 + %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: + %t95 = load i64, ptr %a94 + %t96 = icmp slt i64 %t95, %t93 + br i1 %t96, label %for.body6681, label %for.end6683 +for.body6681: + %t97 = load ptr, ptr %a1 + %t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 + %t99 = load { ptr, i64, i64 }, ptr %t98 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 0, %t100 + br i1 %t101, label %range6684, label %inrange6685 +range6684: + call void @finch_panic_index(ptr @.str.4394, i64 3746, i64 0, i64 %t100) + unreachable +inrange6685: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 + %t104 = load %S.ast.Type, ptr %t103 + %t105 = load i64, ptr %a3 + %t106 = load i64, ptr %a94 + %t107 = load i64, ptr %a91 + %t108 = mul i64 %t106, %t107 + %t109 = add i64 %t105, %t108 + %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: + %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: + %t117 = load ptr, ptr %a111 + %t118 = getelementptr inbounds %S.gen.Leaf, ptr %t117, i64 %t115 + %t119 = load %S.gen.Leaf, ptr %t118 + store %S.gen.Leaf %t119, ptr %a120 + %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t122 = load %S.gen.Leaf, ptr %a120 + %t123 = load i64, ptr %t121 + %t124 = add i64 %t123, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t124, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + %t125 = load ptr, ptr %a4 + %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: + %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: + %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: + %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 + %t134 = load ptr, ptr %a1 + %t135 = load %S.ast.Type, ptr %a2 + %t136 = call i64 @finch.gen.sizeBytes(ptr %t134, %S.ast.Type %t135) + %t137 = insertvalue %S.gen.Leaf %t133, i64 %t136, 1 + %t138 = load %S.ast.Type, ptr %a2 + %t139 = call i1 @finch.gen.isFloat(%S.ast.Type %t138) + %t140 = insertvalue %S.gen.Leaf %t137, i1 %t139, 2 + %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 + %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 + %t148 = load i64, ptr %t131 + %t149 = add i64 %t148, 1 + call void @finch_arr_reserve(ptr %a4, i64 %t149, i64 ptrtoint (ptr getelementptr (%S.gen.Leaf, ptr null, i32 1) to i64)) + %t150 = load ptr, ptr %a4 + %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: + %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 +} + +define internal void @finch.copy.S_gen_Abi(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Abi, ptr %src + store %S.gen.Abi %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_str(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Abi, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Abi, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + +define internal %S.gen.Abi @finch.gen.classifyArm64(ptr %p0, %S.ast.Type %p1, %S.gen.Abi %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca %S.gen.Abi, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a7 = alloca %S.gen.Abi, align 16 + %a8 = alloca %S.gen.Abi, align 16 + %a10 = alloca %S.gen.Abi, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i1, align 16 + %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 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + store %S.gen.Abi %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = load %S.gen.Abi, ptr %a3 + store %S.gen.Abi %t6, ptr %a7 + call void @finch.copy.S_gen_Abi(ptr %a8, ptr %a7) + %t9 = load %S.gen.Abi, ptr %a8 + store %S.gen.Abi %t9, ptr %a10 + %t11 = load ptr, ptr %a1 + %t12 = load %S.ast.Type, ptr %a2 + %t13 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t11, %S.ast.Type %t12, i64 0) + store { ptr, i64, i64 } %t13, ptr %a14 + %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: + %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 ] + store i1 %t21, ptr %a22 + store i64 0, ptr %a23 + br label %each.cond6694 +each.cond6694: + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = load i64, ptr %a23 + %t27 = icmp slt i64 %t26, %t25 + br i1 %t27, label %each.body6695, label %each.end6697 +each.body6695: + %t28 = load ptr, ptr %a14 + %t29 = getelementptr inbounds %S.gen.Leaf, ptr %t28, i64 %t26 + %t30 = load %S.gen.Leaf, ptr %t29 + store %S.gen.Leaf %t30, ptr %a31 + %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: + %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) + unreachable +inrange6702: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds %S.gen.Leaf, ptr %t40, i64 0 + %t42 = getelementptr inbounds %S.gen.Leaf, ptr %t41, i32 0, i32 3 + %t43 = load i1, ptr %t42 + %t44 = icmp ne i1 %t36, %t43 + br label %logic.rend6703 +logic.rend6703: + br label %logic.end6700 +logic.end6700: + %t45 = phi i1 [ true, %logic.from6698 ], [ %t44, %logic.rend6703 ] + br i1 %t45, label %then6704, label %endif6706 +then6704: + store i1 false, ptr %a22 + br label %endif6706 +endif6706: + br label %each.step6696 +each.step6696: + %t46 = load i64, ptr %a23 + %t47 = add i64 %t46, 1 + store i64 %t47, ptr %a23 + br label %each.cond6694 +each.end6697: + %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 + %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) + unreachable +inrange6711: + %t53 = extractvalue { ptr, i64, i64 } %t50, 0 + %t54 = getelementptr inbounds %S.gen.Leaf, ptr %t53, i64 0 + %t55 = getelementptr inbounds %S.gen.Leaf, ptr %t54, i32 0, i32 3 + %t56 = load i1, ptr %t55 + br i1 %t56, label %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 + 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 + 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 +} + +define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %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 + %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 + %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 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca i64, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + 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 + 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 + %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) + %t10 = icmp eq i32 %t9, 0 + br i1 %t10, label %then6728, label %endif6730 +then6728: + %t11 = load %S.gen.Abi, ptr %a4 + store %S.gen.Abi %t11, ptr %a12 + call void @finch.copy.S_gen_Abi(ptr %a13, ptr %a12) + %t14 = load %S.gen.Abi, ptr %a13 + ret %S.gen.Abi %t14 +endif6730: + %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) + 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 + 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 + %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) + 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) + 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 + %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 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 + store { ptr, i64, i64 } %t82, ptr %t86 + store i64 %t84, ptr %t74 + %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) + unreachable +inrange6764: + %t91 = extractvalue { ptr, i64, i64 } %t88, 0 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0 + %t93 = load { ptr, i64, i64 }, ptr %t92 + %t94 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 + store { ptr, i64, i64 } %t93, ptr %a95 + call void @finch_str_copy(ptr %a96, ptr %a95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t97, ptr %t94 + br label %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 + ret %S.gen.Abi %t112 +endif6771: + %t113 = load ptr, ptr %a1 + %t114 = load %S.ast.Type, ptr %a2 + %t115 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t113, %S.ast.Type %t114, i64 0) + store { ptr, i64, i64 } %t115, ptr %a116 + %t117 = load i64, ptr %a36 + %t118 = add i64 %t117, 7 + %t119 = sdiv i64 %t118, 8 + store i64 %t119, ptr %a120 + %t121 = mul i64 2, ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64) + %t122 = call ptr @finch_alloc(i64 %t121) + %t123 = getelementptr inbounds i64, ptr %t122, i64 0 + store i64 0, ptr %t123 + %t124 = getelementptr inbounds i64, ptr %t122, i64 1 + store i64 0, ptr %t124 + %t125 = insertvalue { ptr, i64, i64 } undef, ptr %t122, 0 + %t126 = insertvalue { ptr, i64, i64 } %t125, i64 2, 1 + %t127 = insertvalue { ptr, i64, i64 } %t126, i64 2, 2 + store { ptr, i64, i64 } %t127, ptr %a128 + %t129 = mul i64 2, ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64) + %t130 = call ptr @finch_alloc(i64 %t129) + %t131 = getelementptr inbounds i1, ptr %t130, i64 0 + store i1 false, ptr %t131 + %t132 = getelementptr inbounds i1, ptr %t130, i64 1 + store i1 false, ptr %t132 + %t133 = insertvalue { ptr, i64, i64 } undef, ptr %t130, 0 + %t134 = insertvalue { ptr, i64, i64 } %t133, i64 2, 1 + %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: + %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: + %t142 = load ptr, ptr %a116 + %t143 = getelementptr inbounds %S.gen.Leaf, ptr %t142, i64 %t140 + %t144 = load %S.gen.Leaf, ptr %t143 + store %S.gen.Leaf %t144, ptr %a145 + %t146 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 1 + %t147 = load i64, ptr %t146 + store i64 %t147, ptr %a148 + %t149 = load i64, ptr %a148 + %t150 = icmp sgt i64 %t149, 8 + br i1 %t150, label %then6776, label %endif6778 +then6776: + store i64 8, ptr %a148 + br label %endif6778 +endif6778: + %t151 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 + %t152 = load i64, ptr %t151 + %t153 = load i64, ptr %a148 + %t154 = icmp eq i64 %t153, 0 + br i1 %t154, label %panic6779, label %ok6780 +panic6779: + call void @finch_panic(ptr @.str.4429, i64 3838, ptr @.str.4430) + unreachable +ok6780: + %t155 = srem i64 %t152, %t153 + %t156 = icmp ne i64 %t155, 0 + br i1 %t156, label %then6781, label %endif6783 +then6781: + %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 + store { ptr, i64, i64 } { ptr @.str.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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 +} + +define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Type, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.gen.Plan, align 16 + %a5 = alloca i64, align 16 + %a6 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, 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 + store ptr %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store %S.gen.Plan zeroinitializer, ptr %a4 + store i64 6, ptr %a5 + store i64 8, ptr %a6 + %t7 = load ptr, ptr %a1 + %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 + 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) + 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) + 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 +} + +define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca %S.gen.StructDef, align 16 + %a28 = alloca %S.gen.StructDef, align 16 + %a30 = alloca %S.gen.StructDef, 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 + %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 + %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 + %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 + %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 + %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 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = 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 + %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 + %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) + %t11 = icmp eq i32 %t10, 0 + br i1 %t11, label %then6881, label %endif6883 +then6881: + ret void +endif6883: + %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) + unreachable +ok6885: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = getelementptr inbounds %S.ast.Type, ptr %a4, 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 %range6886, label %inrange6887 +range6886: + call void @finch_panic_index(ptr @.str.4466, i64 3933, i64 %t20, i64 %t22) + unreachable +inrange6887: + %t24 = extractvalue { ptr, i64, i64 } %t21, 0 + %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 + %t26 = load %S.gen.StructDef, ptr %t25 + 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 + %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: + %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 } %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 + 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 } %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 } %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: + ret void +} + +define internal i1 @finch.gen.cPlain(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = 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 + %a21 = alloca { ptr, i64, i64 }, align 16 + 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: + %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 + %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: + %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 + %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: + %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 + %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 ] + ret i1 %t24 +} + +define internal void @finch.gen.checkExport(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.FnSig, align 16 + %a23 = alloca i64, 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 { 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 + %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 + %a122 = 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 2 + %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: + %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: + %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: + %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: + %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: + %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: + %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: + %t24 = load i64, ptr %a23 + %t25 = icmp slt i64 %t24, %t22 + br i1 %t25, label %for.body6916, label %for.end6918 +for.body6916: + %t26 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13 + %t27 = load i64, ptr %a23 + %t28 = load { ptr, i64, i64 }, ptr %t26 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 %t27, %t29 + br i1 %t30, label %range6919, label %inrange6920 +range6919: + call void @finch_panic_index(ptr @.str.4481, i64 3958, i64 %t27, i64 %t29) + unreachable +inrange6920: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 %t27 + %t33 = load %S.ast.Type, ptr %t32 + %t34 = call i1 @finch.gen.cPlain(%S.ast.Type %t33) + %t35 = xor i1 %t34, true + br i1 %t35, label %then6921, label %endif6923 +then6921: + %t36 = load ptr, ptr %a1 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t38 = load i64, ptr %a23 + %t39 = load { ptr, i64, i64 }, ptr %t37 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range6924, label %inrange6925 +range6924: + call void @finch_panic_index(ptr @.str.4482, i64 3959, i64 %t38, i64 %t40) + unreachable +inrange6925: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t38 + %t44 = load %S.ast.Node, ptr %t43 + %t45 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13 + %t46 = load i64, ptr %a23 + %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) + unreachable +inrange6927: + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = getelementptr inbounds %S.ast.Type, ptr %t50, i64 %t46 + %t52 = load %S.ast.Type, ptr %t51 + %t53 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t52) + store { ptr, i64, i64 } { ptr @.str.4483, i64 66, i64 0 }, ptr %a55 + store { ptr, i64, i64 } %t53, ptr %a56 + call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) + %t57 = load { ptr, i64, i64 }, ptr %a54 + store { ptr, i64, i64 } %t57, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.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) + 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: + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %p0, %S.gen.FnSig %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.FnSig, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.gen.Saved, align 16 + %a11 = alloca i64, align 16 + %a22 = alloca %S.ast.Type, align 16 + %a23 = alloca %S.ast.Type, align 16 + %a25 = alloca %S.ast.Type, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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 + %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 + %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 + %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 + %a79 = 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 + %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 + %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 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = 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 + %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 + %a153 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a261 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a266 = 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 + store { ptr, i64, i64 } zeroinitializer, ptr %a4 + %t5 = load ptr, ptr %a1 + %t6 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t5) + store %S.gen.Saved %t6, ptr %a7 + %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 13 + %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: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t10 + br i1 %t13, label %for.body6949, label %for.end6951 +for.body6949: + %t14 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 13 + %t15 = load i64, ptr %a11 + %t16 = load { ptr, i64, i64 }, ptr %t14 + %t17 = extractvalue { ptr, i64, i64 } %t16, 1 + %t18 = icmp uge i64 %t15, %t17 + br i1 %t18, label %range6952, label %inrange6953 +range6952: + call void @finch_panic_index(ptr @.str.4493, i64 3978, i64 %t15, i64 %t17) + unreachable +inrange6953: + %t19 = extractvalue { ptr, i64, i64 } %t16, 0 + %t20 = getelementptr inbounds %S.ast.Type, ptr %t19, i64 %t15 + %t21 = load %S.ast.Type, ptr %t20 + store %S.ast.Type %t21, ptr %a22 + call void @finch.copy.S_ast_Type(ptr %a23, ptr %a22) + %t24 = load %S.ast.Type, ptr %a23 + store %S.ast.Type %t24, ptr %a25 + %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 + %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) + %t31 = icmp ne i32 %t30, 0 + br i1 %t31, label %then6954, label %else6955 +then6954: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t33 = load i64, ptr %a11 + call void @finch_str_from_int(ptr %a34, i64 %t33) + %t35 = load { ptr, i64, i64 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.4495, i64 13, i64 0 }, ptr %a37 + store { ptr, i64, i64 } %t35, ptr %a38 + call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) + %t39 = load { ptr, i64, i64 }, ptr %a36 + %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 + 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: + %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 + %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 + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca %S.ast.Node, align 16 + %a14 = alloca %S.gen.FnSig, align 16 + %a15 = alloca %S.gen.FnSig, align 16 + %a17 = alloca %S.gen.FnSig, 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 + %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 + %a33 = 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 + %a48 = alloca i64, align 16 + %a53 = 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 + %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 + %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 + %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 + %a162 = 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 + %a170 = alloca { ptr, i64, i64 }, 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 + %a196 = alloca { ptr, i64, i64 }, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = 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 + %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 + %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 + %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 + %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 + %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 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = 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 + %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 + %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 + %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 + %a412 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = 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 + %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 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca 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 + %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 + %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 + %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 + %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 + %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 + %a593 = 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 + %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 + %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 + %a627 = alloca { ptr, i64, i64 }, align 16 + %a648 = alloca { ptr, i64, i64 }, align 16 + %a649 = 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 + %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 + %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 + %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 + %a736 = alloca { ptr, i64, i64 }, align 16 + %a737 = alloca { ptr, i64, i64 }, align 16 + %a738 = 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 + %a753 = alloca { ptr, i64, i64 }, align 16 + %a754 = 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) + unreachable +ok6969: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 + %t7 = load i64, ptr %a2 + %t8 = load { ptr, i64, i64 }, ptr %t6 + %t9 = extractvalue { ptr, i64, i64 } %t8, 1 + %t10 = icmp uge i64 %t7, %t9 + br i1 %t10, label %range6970, label %inrange6971 +range6970: + call void @finch_panic_index(ptr @.str.4530, i64 4012, i64 %t7, i64 %t9) + unreachable +inrange6971: + %t11 = extractvalue { ptr, i64, i64 } %t8, 0 + %t12 = getelementptr inbounds %S.gen.FnSig, ptr %t11, i64 %t7 + %t13 = load %S.gen.FnSig, ptr %t12 + store %S.gen.FnSig %t13, ptr %a14 + call void @finch.copy.S_gen_FnSig(ptr %a15, ptr %a14) + %t16 = load %S.gen.FnSig, ptr %a15 + store %S.gen.FnSig %t16, ptr %a17 + %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 } %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) + 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) + 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 + %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) + 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) + 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) + 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 + 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 + %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) + 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) + 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) + store { ptr, i64, i64 } %t363, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a366 + call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a364 + %t368 = load ptr, ptr %a1 + %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 } %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) + 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) + 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: + %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 + 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 + %t703 = load ptr, ptr %a1 + %t704 = load { ptr, i64, i64 }, ptr %a621 + %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) + store { ptr, i64, i64 } %t702, 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 +} + +define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a14 = alloca %S.gen.EnumDef, align 16 + %a15 = alloca %S.gen.EnumDef, align 16 + %a17 = alloca %S.gen.EnumDef, align 16 + %a31 = alloca %S.gen.Val, align 16 + %a46 = 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 + %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 + %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 + %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 + %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 + %a163 = 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 + %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 + %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 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = 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 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca %S.ast.Type, align 16 + %a221 = 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) + unreachable +ok7091: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 + %t7 = load i64, ptr %a3 + %t8 = load { ptr, i64, i64 }, ptr %t6 + %t9 = extractvalue { ptr, i64, i64 } %t8, 1 + %t10 = icmp uge i64 %t7, %t9 + br i1 %t10, label %range7092, label %inrange7093 +range7092: + call void @finch_panic_index(ptr @.str.4610, i64 4087, i64 %t7, i64 %t9) + unreachable +inrange7093: + %t11 = extractvalue { ptr, i64, i64 } %t8, 0 + %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 + %t13 = load %S.gen.EnumDef, ptr %t12 + store %S.gen.EnumDef %t13, ptr %a14 + call void @finch.copy.S_gen_EnumDef(ptr %a15, ptr %a14) + %t16 = load %S.gen.EnumDef, ptr %a15 + store %S.gen.EnumDef %t16, ptr %a17 + %t18 = load ptr, ptr %a1 + %t19 = load %S.ast.Node, ptr %a2 + %t20 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t21 = load { ptr, i64, i64 }, ptr %t20 + call void @finch.gen.checkArgs(ptr %t18, %S.ast.Node %t19, i64 0, i64 1, { ptr, i64, i64 } %t21) + %t22 = load ptr, ptr %a1 + %t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %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) + unreachable +inrange7095: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 0 + %t29 = load %S.ast.Node, ptr %t28 + %t30 = call %S.gen.Val @finch.gen.expr(ptr %t22, %S.ast.Node %t29) + store %S.gen.Val %t30, ptr %a31 + %t32 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 + %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: + %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) + unreachable +inrange7100: + %t41 = extractvalue { ptr, i64, i64 } %t38, 0 + %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 0 + %t43 = load %S.ast.Node, ptr %t42 + %t44 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.4613, i64 54, i64 0 }, ptr %a48 + call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) + %t49 = load { ptr, i64, i64 }, ptr %a46 + %t50 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 + %t51 = load %S.ast.Type, ptr %t50 + %t52 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t51) + 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) + 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) + 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 +} + +define internal { ptr, i64, i64 } @finch.gen.cExt(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 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = 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 + %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 + %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: + %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: + %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: + %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: + %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 + %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: + %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) + unreachable +ok7140: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 29 + %t26 = load %S.platform.Target, ptr %t25 + %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) + br label %logic.rend7141 +logic.rend7141: + br label %logic.end7138 +logic.end7138: + %t28 = phi i1 [ false, %logic.from7136 ], [ %t27, %logic.rend7141 ] + br label %logic.rend7142 +logic.rend7142: + br label %logic.end7135 +logic.end7135: + %t29 = phi i1 [ true, %logic.from7133 ], [ %t28, %logic.rend7142 ] + br label %logic.from7143 +logic.from7143: + br i1 %t29, label %logic.rhs7144, label %logic.end7145 +logic.rhs7144: + %t30 = load %S.ast.Type, ptr %a2 + %t31 = call i64 @finch.gen.bitsOf(%S.ast.Type %t30) + %t32 = icmp slt i64 %t31, 32 + br label %logic.rend7146 +logic.rend7146: + br label %logic.end7145 +logic.end7145: + %t33 = phi i1 [ false, %logic.from7143 ], [ %t32, %logic.rend7146 ] + br i1 %t33, label %then7147, label %endif7149 +then7147: + ret { ptr, i64, i64 } { ptr @.str.4635, i64 8, i64 0 } +endif7149: + %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.4636, i64 4, i64 0 }, ptr %a37 + %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) + %t39 = icmp ne i32 %t38, 0 + br label %logic.from7150 +logic.from7150: + br i1 %t39, label %logic.rhs7151, label %logic.end7152 +logic.rhs7151: + %t40 = load %S.ast.Type, ptr %a2 + %t41 = call i64 @finch.gen.bitsOf(%S.ast.Type %t40) + %t42 = icmp slt i64 %t41, 32 + br label %logic.rend7153 +logic.rend7153: + br label %logic.end7152 +logic.end7152: + %t43 = phi i1 [ false, %logic.from7150 ], [ %t42, %logic.rend7153 ] + br i1 %t43, label %then7154, label %endif7156 +then7154: + ret { ptr, i64, i64 } { ptr @.str.4637, i64 8, i64 0 } +endif7156: + ret { ptr, i64, i64 } { ptr @.str.4638, i64 0, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.gen.cLL(ptr %p0, %S.ast.Type %p1) { +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 + store ptr %p0, ptr %a1 + store %S.ast.Type %p1, ptr %a2 + %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 + %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: + %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) + ret { ptr, i64, i64 } %t11 +} + +define internal %S.gen.Val @finch.gen.callC(ptr %p0, %S.ast.Node %p1, %S.cimport.CFunc %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.cimport.CFunc, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca %S.ast.Type, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %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 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a407 = alloca { ptr, i64, i64 }, align 16 + %a408 = alloca { ptr, i64, i64 }, align 16 + %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 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca i64, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a492 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 + %a564 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a597 = alloca { ptr, i64, i64 }, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a615 = alloca %S.gen.Val, align 16 + %a618 = alloca %S.ast.Type, align 16 + %a619 = alloca %S.ast.Type, align 16 + %a621 = alloca %S.ast.Type, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a625 = alloca { ptr, i64, i64 }, align 16 + %a639 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a662 = alloca { ptr, i64, i64 }, align 16 + %a664 = alloca { ptr, i64, i64 }, align 16 + %a667 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %a841 = 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 + %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 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca { ptr, i64, i64 }, align 16 + %a896 = alloca { ptr, i64, i64 }, align 16 + %a899 = alloca { ptr, i64, i64 }, align 16 + %a900 = alloca { ptr, i64, i64 }, align 16 + %a901 = alloca { ptr, i64, i64 }, align 16 + %a903 = alloca { ptr, i64, i64 }, align 16 + %a904 = alloca { ptr, i64, i64 }, align 16 + %a905 = alloca { ptr, i64, i64 }, align 16 + %a909 = alloca { ptr, i64, i64 }, align 16 + %a910 = alloca { ptr, i64, i64 }, align 16 + %a911 = alloca { ptr, i64, i64 }, align 16 + %a913 = alloca { ptr, i64, i64 }, align 16 + %a914 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 + %a918 = alloca { ptr, i64, i64 }, align 16 + %a919 = alloca { ptr, i64, i64 }, align 16 + %a921 = alloca { ptr, i64, i64 }, align 16 + %a922 = alloca { ptr, i64, i64 }, align 16 + %a923 = alloca { ptr, i64, i64 }, align 16 + %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 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a966 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a972 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca %S.ast.Type, align 16 + %a988 = alloca %S.ast.Type, align 16 + %a993 = alloca { ptr, i64, i64 }, align 16 + %a994 = alloca { ptr, i64, i64 }, align 16 + %a999 = alloca { ptr, i64, i64 }, align 16 + %a1004 = alloca { ptr, i64, i64 }, align 16 + %a1005 = alloca { ptr, i64, i64 }, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1008 = alloca { ptr, i64, i64 }, align 16 + %a1009 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 + %a1013 = alloca { ptr, i64, i64 }, align 16 + %a1014 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1017 = alloca { ptr, i64, i64 }, align 16 + %a1018 = alloca { ptr, i64, i64 }, align 16 + %a1019 = alloca { ptr, i64, i64 }, align 16 + %a1026 = alloca %S.ast.Type, align 16 + %a1027 = alloca %S.ast.Type, align 16 + %a1031 = alloca { ptr, i64, i64 }, align 16 + %a1032 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca %S.ast.Type, align 16 + %a1037 = alloca %S.ast.Type, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.cimport.CFunc %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic7160, label %ok7161 +panic7160: + call void @finch_panic(ptr @.str.4641, i64 4140, ptr @.str.4642) + unreachable +ok7161: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + br i1 %t7, label %then7162, label %endif7164 +then7162: + store { ptr, i64, i64 } zeroinitializer, ptr %a8 + %t9 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a10 + br label %each.cond7165 +each.cond7165: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body7166, label %each.end7168 +each.body7166: + %t15 = load ptr, ptr %t9 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 + %t17 = load %S.ast.Type, ptr %t16 + store %S.ast.Type %t17, ptr %a18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t20 = load %S.ast.Type, ptr %a18 + %t21 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t20) + %t22 = load i64, ptr %t19 + %t23 = add i64 %t22, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t23, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t24 = load ptr, ptr %a8 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i64 %t22 + store { ptr, i64, i64 } %t21, ptr %t25 + store i64 %t23, ptr %t19 + br label %each.step7167 +each.step7167: + %t26 = load i64, ptr %a10 + %t27 = add i64 %t26, 1 + store i64 %t27, ptr %a10 + br label %each.cond7165 +each.end7168: + %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t29 = load i1, ptr %t28 + br i1 %t29, label %then7169, label %endif7171 +then7169: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %a8 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.4643, i64 3, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %endif7171 +endif7171: + %t35 = load ptr, ptr %a1 + %t36 = load %S.ast.Node, ptr %a2 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t38 = load i64, ptr %t37 + %t39 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 + %t41 = load i64, ptr %t40 + %t42 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.4644, i64 17, i64 0 }, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4645, i64 7, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + %t52 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t53 = load %S.ast.Type, ptr %t52 + %t54 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t53) + store { ptr, i64, i64 } %t51, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a59 + %t63 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t62, ptr %a66 + store { ptr, i64, i64 } %t64, ptr %a67 + call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) + %t68 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t68, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4647, i64 1, i64 0 }, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4648, i64 2, i64 0 }, ptr %a74 + call void @finch_str_join(ptr %a75, ptr %a8, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t72, ptr %a78 + store { ptr, i64, i64 } %t76, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a77 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4649, i64 5, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a81 + call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t84, { ptr, i64, i64 } { ptr @.str.4650, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7164 +endif7164: + %t85 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = icmp sgt i64 %t87, 0 + br i1 %t88, label %then7172, label %endif7174 +then7172: + %t89 = load ptr, ptr %a1 + %t90 = load %S.ast.Node, ptr %a2 + %t91 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t92 = load { ptr, i64, i64 }, ptr %t91 + store { ptr, i64, i64 } { ptr @.str.4651, i64 16, i64 0 }, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t96, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4652, i64 35, i64 0 }, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a97 + %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t100, ptr %a104 + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.fail(ptr %t89, %S.ast.Node %t90, { ptr, i64, i64 } %t106) + br label %endif7174 +endif7174: + %t107 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t107, i32 0, i32 1 + %t109 = load i64, ptr %t108 + store i64 %t109, ptr %a110 + %t111 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t112 = load i1, ptr %t111 + br i1 %t112, label %then7175, label %else7176 +then7175: + %t113 = load i64, ptr %a110 + %t114 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp slt i64 %t113, %t116 + br i1 %t117, label %then7178, label %endif7180 +then7178: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.4653, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4654, i64 17, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a126 + %t130 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 + %t132 = load i64, ptr %t131 + call void @finch_str_from_int(ptr %a133, i64 %t132) + %t134 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t129, ptr %a136 + store { ptr, i64, i64 } %t134, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a135 + store { ptr, i64, i64 } %t138, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.4655, i64 22, i64 0 }, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = load i64, ptr %a110 + call void @finch_str_from_int(ptr %a144, i64 %t143) + %t145 = load { ptr, i64, i64 }, ptr %a144 + store { ptr, i64, i64 } %t142, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + %t149 = load { ptr, i64, i64 }, ptr %a146 + call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t149) + br label %endif7180 +endif7180: + br label %endif7177 +else7176: + %t150 = load i64, ptr %a110 + %t151 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load i64, ptr %t152 + %t154 = icmp ne i64 %t150, %t153 + br i1 %t154, label %then7181, label %endif7183 +then7181: + %t155 = load ptr, ptr %a1 + %t156 = load %S.ast.Node, ptr %a2 + %t157 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } { ptr @.str.4656, i64 1, i64 0 }, ptr %a160 + store { ptr, i64, i64 } %t158, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t162, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.4657, i64 8, i64 0 }, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a163 + %t167 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t169 = load i64, ptr %t168 + call void @finch_str_from_int(ptr %a170, i64 %t169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + store { ptr, i64, i64 } %t166, ptr %a173 + store { ptr, i64, i64 } %t171, ptr %a174 + call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) + %t175 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.4658, i64 22, i64 0 }, ptr %a178 + call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a176 + %t180 = load i64, ptr %a110 + call void @finch_str_from_int(ptr %a181, i64 %t180) + %t182 = load { ptr, i64, i64 }, ptr %a181 + store { ptr, i64, i64 } %t179, ptr %a184 + store { ptr, i64, i64 } %t182, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.fail(ptr %t155, %S.ast.Node %t156, { ptr, i64, i64 } %t186) + br label %endif7183 +endif7183: + br label %endif7177 +endif7177: + %t187 = load ptr, ptr %a1 + %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t189 = load %S.ast.Type, ptr %t188 + %t190 = load %S.ast.Node, ptr %a2 + %t191 = call %S.ast.Type @finch.gen.resolve(ptr %t187, %S.ast.Type %t189, %S.ast.Node %t190) + store %S.ast.Type %t191, ptr %a192 + %t193 = load ptr, ptr %a1 + %t194 = load %S.ast.Node, ptr %a2 + %t195 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t196 = load { ptr, i64, i64 }, ptr %t195 + %t197 = load %S.ast.Type, ptr %a192 + call void @finch.gen.checkByValue(ptr %t193, %S.ast.Node %t194, { ptr, i64, i64 } %t196, %S.ast.Type %t197, { ptr, i64, i64 } { ptr @.str.4659, i64 7, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a198 + %t199 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a200 + br label %each.cond7184 +each.cond7184: + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i32 0, i32 1 + %t202 = load i64, ptr %t201 + %t203 = load i64, ptr %a200 + %t204 = icmp slt i64 %t203, %t202 + br i1 %t204, label %each.body7185, label %each.end7187 +each.body7185: + %t205 = load ptr, ptr %t199 + %t206 = getelementptr inbounds %S.ast.Type, ptr %t205, i64 %t203 + %t207 = load %S.ast.Type, ptr %t206 + store %S.ast.Type %t207, ptr %a208 + %t209 = load ptr, ptr %a1 + %t210 = load %S.ast.Type, ptr %a208 + %t211 = load %S.ast.Node, ptr %a2 + %t212 = call %S.ast.Type @finch.gen.resolve(ptr %t209, %S.ast.Type %t210, %S.ast.Node %t211) + store %S.ast.Type %t212, ptr %a213 + %t214 = load ptr, ptr %a1 + %t215 = load %S.ast.Node, ptr %a2 + %t216 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + %t218 = load %S.ast.Type, ptr %a213 + call void @finch.gen.checkByValue(ptr %t214, %S.ast.Node %t215, { ptr, i64, i64 } %t217, %S.ast.Type %t218, { ptr, i64, i64 } { ptr @.str.4660, i64 5, i64 0 }) + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %a213 + store %S.ast.Type %t220, ptr %a221 + call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) + %t223 = load %S.ast.Type, ptr %a222 + %t224 = load i64, ptr %t219 + %t225 = add i64 %t224, 1 + call void @finch_arr_reserve(ptr %a198, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t226 = load ptr, ptr %a198 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 + store %S.ast.Type %t223, ptr %t227 + store i64 %t225, ptr %t219 + br label %each.step7186 +each.step7186: + %t228 = load i64, ptr %a200 + %t229 = add i64 %t228, 1 + store i64 %t229, ptr %a200 + br label %each.cond7184 +each.end7187: + %t230 = load ptr, ptr %a1 + %t231 = load %S.ast.Type, ptr %a192 + %t232 = load { ptr, i64, i64 }, ptr %a198 + %t233 = call %S.gen.Plan @finch.gen.makePlan(ptr %t230, %S.ast.Type %t231, { ptr, i64, i64 } %t232) + store %S.gen.Plan %t233, ptr %a234 + store { ptr, i64, i64 } zeroinitializer, ptr %a235 + store { ptr, i64, i64 } zeroinitializer, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.4661, i64 0, i64 0 }, ptr %a237 + %t238 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 3 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then7188, label %endif7190 +then7188: + %t240 = load ptr, ptr %a1 + %t241 = load ptr, ptr %a1 + %t242 = load %S.ast.Type, ptr %a192 + %t243 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t241, %S.ast.Type %t242) + %t244 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t240, { ptr, i64, i64 } %t243) + store { ptr, i64, i64 } %t244, ptr %a237 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t246 = load ptr, ptr %a1 + %t247 = load %S.ast.Type, ptr %a192 + %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t246, %S.ast.Type %t247) + store { ptr, i64, i64 } { ptr @.str.4662, i64 9, i64 0 }, ptr %a250 + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + %t252 = load { ptr, i64, i64 }, ptr %a249 + store { ptr, i64, i64 } %t252, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.4663, i64 10, i64 0 }, ptr %a255 + call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a253 + %t257 = load i64, ptr %t245 + %t258 = add i64 %t257, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t259 = load ptr, ptr %a235 + %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 + store { ptr, i64, i64 } %t256, ptr %t260 + store i64 %t258, ptr %t245 + %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t262 = load ptr, ptr %a1 + %t263 = load %S.ast.Type, ptr %a192 + %t264 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t262, %S.ast.Type %t263) + store { ptr, i64, i64 } { ptr @.str.4664, i64 9, i64 0 }, ptr %a266 + store { ptr, i64, i64 } %t264, ptr %a267 + call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a265 + store { ptr, i64, i64 } %t268, ptr %a270 + store { ptr, i64, i64 } { ptr @.str.4665, i64 11, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + %t273 = load { ptr, i64, i64 }, ptr %a237 + store { ptr, i64, i64 } %t272, ptr %a275 + store { ptr, i64, i64 } %t273, ptr %a276 + call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a274 + %t278 = load i64, ptr %t261 + %t279 = add i64 %t278, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t279, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t280 = load ptr, ptr %a236 + %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t280, i64 %t278 + store { ptr, i64, i64 } %t277, ptr %t281 + store i64 %t279, ptr %t261 + br label %endif7190 +endif7190: + %t282 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t284 = load i64, ptr %t283 + store i64 0, ptr %a285 + br label %for.cond7191 +for.cond7191: + %t286 = load i64, ptr %a285 + %t287 = icmp slt i64 %t286, %t284 + br i1 %t287, label %for.body7192, label %for.end7194 +for.body7192: + %t288 = load i64, ptr %a285 + %t289 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 + %t291 = load i64, ptr %t290 + %t292 = icmp slt i64 %t288, %t291 + br i1 %t292, label %then7195, label %endif7197 +then7195: + %t293 = load i64, ptr %a285 + %t294 = load { ptr, i64, i64 }, ptr %a198 + %t295 = extractvalue { ptr, i64, i64 } %t294, 1 + %t296 = icmp uge i64 %t293, %t295 + br i1 %t296, label %range7198, label %inrange7199 +range7198: + call void @finch_panic_index(ptr @.str.4666, i64 4180, i64 %t293, i64 %t295) + unreachable +inrange7199: + %t297 = extractvalue { ptr, i64, i64 } %t294, 0 + %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 %t293 + %t299 = load %S.ast.Type, ptr %t298 + store %S.ast.Type %t299, ptr %a300 + call void @finch.copy.S_ast_Type(ptr %a301, ptr %a300) + %t302 = load %S.ast.Type, ptr %a301 + store %S.ast.Type %t302, ptr %a303 + %t304 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 1 + %t305 = load i64, ptr %a285 + %t306 = load { ptr, i64, i64 }, ptr %t304 + %t307 = extractvalue { ptr, i64, i64 } %t306, 1 + %t308 = icmp uge i64 %t305, %t307 + br i1 %t308, label %range7200, label %inrange7201 +range7200: + call void @finch_panic_index(ptr @.str.4667, i64 4181, i64 %t305, i64 %t307) + unreachable +inrange7201: + %t309 = extractvalue { ptr, i64, i64 } %t306, 0 + %t310 = getelementptr inbounds %S.gen.Abi, ptr %t309, i64 %t305 + %t311 = load %S.gen.Abi, ptr %t310 + store %S.gen.Abi %t311, ptr %a312 + call void @finch.copy.S_gen_Abi(ptr %a313, ptr %a312) + %t314 = load %S.gen.Abi, ptr %a313 + store %S.gen.Abi %t314, ptr %a315 + %t316 = load ptr, ptr %a1 + %t317 = load ptr, ptr %a1 + %t318 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t319 = load i64, ptr %a285 + %t320 = load { ptr, i64, i64 }, ptr %t318 + %t321 = extractvalue { ptr, i64, i64 } %t320, 1 + %t322 = icmp uge i64 %t319, %t321 + br i1 %t322, label %range7202, label %inrange7203 +range7202: + call void @finch_panic_index(ptr @.str.4668, i64 4182, i64 %t319, i64 %t321) + unreachable +inrange7203: + %t323 = extractvalue { ptr, i64, i64 } %t320, 0 + %t324 = getelementptr inbounds %S.ast.Node, ptr %t323, i64 %t319 + %t325 = load %S.ast.Node, ptr %t324 + %t326 = load %S.ast.Type, ptr %a303 + %t327 = call %S.gen.Val @finch.gen.exprWant(ptr %t317, %S.ast.Node %t325, %S.ast.Type %t326) + %t328 = load %S.ast.Type, ptr %a303 + %t329 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t330 = load i64, ptr %a285 + %t331 = load { ptr, i64, i64 }, ptr %t329 + %t332 = extractvalue { ptr, i64, i64 } %t331, 1 + %t333 = icmp uge i64 %t330, %t332 + br i1 %t333, label %range7204, label %inrange7205 +range7204: + call void @finch_panic_index(ptr @.str.4669, i64 4182, i64 %t330, i64 %t332) + unreachable +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 + call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a383 + %t387 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 3 + %t388 = load i64, ptr %t387 + call void @finch_str_from_int(ptr %a389, i64 %t388) + %t390 = load { ptr, i64, i64 }, ptr %a389 + store { ptr, i64, i64 } %t386, ptr %a392 + store { ptr, i64, i64 } %t390, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a391 + store { ptr, i64, i64 } %t394, ptr %a395 + %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t397 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_copy(ptr %a399, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + %t401 = load i64, ptr %t396 + %t402 = add i64 %t401, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t403 = load ptr, ptr %a235 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 + store { ptr, i64, i64 } %t400, ptr %t404 + store i64 %t402, ptr %t396 + %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t406 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t406, ptr %a408 + store { ptr, i64, i64 } { ptr @.str.4675, i64 1, i64 0 }, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a407 + %t411 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t410, ptr %a413 + store { ptr, i64, i64 } %t411, ptr %a414 + call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a412 + %t416 = load i64, ptr %t405 + %t417 = add i64 %t416, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t417, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t418 = load ptr, ptr %a236 + %t419 = getelementptr inbounds { ptr, i64, i64 }, ptr %t418, i64 %t416 + store { ptr, i64, i64 } %t415, ptr %t419 + store i64 %t417, ptr %t405 + br label %endif7208 +else7207: + %t420 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 0 + %t421 = load { ptr, i64, i64 }, ptr %t420 + store { ptr, i64, i64 } %t421, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.4676, i64 8, i64 0 }, ptr %a423 + %t424 = call i32 @finch_str_eq(ptr %a422, ptr %a423) + %t425 = icmp ne i32 %t424, 0 + br i1 %t425, label %then7209, label %else7210 +then7209: + %t426 = load ptr, ptr %a1 + %t427 = load ptr, ptr %a1 + %t428 = load %S.ast.Type, ptr %a303 + %t429 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t427, %S.ast.Type %t428) + %t430 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t426, { ptr, i64, i64 } %t429) + store { ptr, i64, i64 } %t430, ptr %a431 + %t432 = load ptr, ptr %a1 + %t433 = load ptr, ptr %a1 + %t434 = load %S.ast.Type, ptr %a303 + %t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t433, %S.ast.Type %t434) + %t436 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t437 = load { ptr, i64, i64 }, ptr %t436 + %t438 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.store(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t437, { ptr, i64, i64 } %t438) + %t439 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t440 = load i64, ptr %t439 + %t441 = add i64 %t440, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t441, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t442 = load ptr, ptr %a235 + %t443 = getelementptr inbounds { ptr, i64, i64 }, ptr %t442, i64 %t440 + store { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, ptr %t443 + store i64 %t441, ptr %t439 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t445 = load { ptr, i64, i64 }, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.4678, i64 4, i64 0 }, ptr %a447 + store { ptr, i64, i64 } %t445, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + %t449 = load { ptr, i64, i64 }, ptr %a446 + %t450 = load i64, ptr %t444 + %t451 = add i64 %t450, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t451, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t452 = load ptr, ptr %a236 + %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t452, i64 %t450 + store { ptr, i64, i64 } %t449, ptr %t453 + store i64 %t451, ptr %t444 + br label %endif7211 +else7210: + %t454 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 0 + %t455 = load { ptr, i64, i64 }, ptr %t454 + store { ptr, i64, i64 } %t455, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.4679, i64 6, i64 0 }, ptr %a457 + %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) + %t459 = icmp ne i32 %t458, 0 + br i1 %t459, label %then7212, label %else7213 +then7212: + %t460 = load ptr, ptr %a1 + %t461 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t460, { ptr, i64, i64 } { ptr @.str.4680, i64 9, i64 0 }) + store { ptr, i64, i64 } %t461, ptr %a462 + %t463 = load ptr, ptr %a1 + %t464 = load ptr, ptr %a1 + %t465 = load %S.ast.Type, ptr %a303 + %t466 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t464, %S.ast.Type %t465) + %t467 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t468 = load { ptr, i64, i64 }, ptr %t467 + %t469 = load { ptr, i64, i64 }, ptr %a462 + call void @finch.gen.store(ptr %t463, { ptr, i64, i64 } %t466, { ptr, i64, i64 } %t468, { ptr, i64, i64 } %t469) + %t470 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t471 = getelementptr inbounds { ptr, i64, i64 }, ptr %t470, i32 0, i32 1 + %t472 = load i64, ptr %t471 + store i64 0, ptr %a473 + br label %for.cond7215 +for.cond7215: + %t474 = load i64, ptr %a473 + %t475 = icmp slt i64 %t474, %t472 + br i1 %t475, label %for.body7216, label %for.end7218 +for.body7216: + %t476 = load ptr, ptr %a1 + %t477 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t478 = load i64, ptr %a473 + %t479 = load { ptr, i64, i64 }, ptr %t477 + %t480 = extractvalue { ptr, i64, i64 } %t479, 1 + %t481 = icmp uge i64 %t478, %t480 + br i1 %t481, label %range7219, label %inrange7220 +range7219: + call void @finch_panic_index(ptr @.str.4681, i64 4198, i64 %t478, i64 %t480) + unreachable +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) + 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) + 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 + %t638 = load { ptr, i64, i64 }, ptr %t637 + store { ptr, i64, i64 } %t638, ptr %a639 + store { ptr, i64, i64 } { ptr @.str.4694, i64 6, i64 0 }, ptr %a640 + %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) + %t642 = icmp ne i32 %t641, 0 + br label %logic.from7235 +logic.from7235: + br i1 %t642, label %logic.end7237, label %logic.rhs7236 +logic.rhs7236: + %t643 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t644 = load { ptr, i64, i64 }, ptr %t643 + store { ptr, i64, i64 } %t644, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.4695, i64 5, i64 0 }, ptr %a646 + %t647 = call i32 @finch_str_eq(ptr %a645, ptr %a646) + %t648 = icmp ne i32 %t647, 0 + br label %logic.rend7238 +logic.rend7238: + br label %logic.end7237 +logic.end7237: + %t649 = phi i1 [ true, %logic.from7235 ], [ %t648, %logic.rend7238 ] + br i1 %t649, label %then7239, label %endif7241 +then7239: + %t650 = load ptr, ptr %a1 + %t651 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t652 = load i64, ptr %a285 + %t653 = load { ptr, i64, i64 }, ptr %t651 + %t654 = extractvalue { ptr, i64, i64 } %t653, 1 + %t655 = icmp uge i64 %t652, %t654 + br i1 %t655, label %range7242, label %inrange7243 +range7242: + call void @finch_panic_index(ptr @.str.4696, i64 4219, i64 %t652, i64 %t654) + unreachable +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) + unreachable +ok7274: + %t769 = getelementptr inbounds %S.gen.Gen, ptr %t767, i32 0, i32 38 + %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i32 0, i32 1 + %t771 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t772 = load { ptr, i64, i64 }, ptr %t771 + store { ptr, i64, i64 } { ptr @.str.4718, i64 2, i64 0 }, ptr %a774 + store { ptr, i64, i64 } %t772, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + %t776 = load { ptr, i64, i64 }, ptr %a773 + store i64 -1, ptr %a777 + %t778 = load i64, ptr %t770 + %t779 = load ptr, ptr %t769 + store i64 0, ptr %a780 + br label %find.cond7275 +find.cond7275: + %t781 = load i64, ptr %a780 + %t782 = icmp slt i64 %t781, %t778 + br i1 %t782, label %find.body7276, label %find.end7279 +find.body7276: + %t783 = getelementptr inbounds { ptr, i64, i64 }, ptr %t779, i64 %t781 + %t784 = load { ptr, i64, i64 }, ptr %t783 + store { ptr, i64, i64 } %t784, ptr %a785 + store { ptr, i64, i64 } %t776, ptr %a786 + %t787 = call i32 @finch_str_eq(ptr %a785, ptr %a786) + %t788 = icmp ne i32 %t787, 0 + br i1 %t788, label %find.hit7277, label %find.next7278 +find.hit7277: + store i64 %t781, ptr %a777 + br label %find.end7279 +find.next7278: + %t789 = add i64 %t781, 1 + store i64 %t789, ptr %a780 + br label %find.cond7275 +find.end7279: + %t790 = load i64, ptr %a777 + %t791 = icmp sge i64 %t790, 0 + %t792 = xor i1 %t791, true + br i1 %t792, label %then7280, label %endif7282 +then7280: + %t793 = load ptr, ptr %a1 + %t794 = icmp eq ptr %t793, null + br i1 %t794, label %panic7283, label %ok7284 +panic7283: + call void @finch_panic(ptr @.str.4719, i64 4251, ptr @.str.4720) + unreachable +ok7284: + %t795 = getelementptr inbounds %S.gen.Gen, ptr %t793, i32 0, i32 38 + %t796 = getelementptr inbounds { ptr, i64, i64 }, ptr %t795, i32 0, i32 1 + %t797 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t798 = load { ptr, i64, i64 }, ptr %t797 + store { ptr, i64, i64 } { ptr @.str.4721, i64 2, i64 0 }, ptr %a800 + store { ptr, i64, i64 } %t798, ptr %a801 + call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) + %t802 = load { ptr, i64, i64 }, ptr %a799 + %t803 = load i64, ptr %t796 + %t804 = add i64 %t803, 1 + call void @finch_arr_reserve(ptr %t795, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t805 = load ptr, ptr %t795 + %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 + store { ptr, i64, i64 } %t802, ptr %t806 + store i64 %t804, ptr %t796 + %t807 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t808 = load { ptr, i64, i64 }, ptr %t807 + %t809 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t808) + %t810 = xor i1 %t809, true + br i1 %t810, label %then7285, label %endif7287 +then7285: + %t811 = load ptr, ptr %a1 + %t812 = icmp eq ptr %t811, null + br i1 %t812, label %panic7288, label %ok7289 +panic7288: + call void @finch_panic(ptr @.str.4722, i64 4253, ptr @.str.4723) + unreachable +ok7289: + %t813 = getelementptr inbounds %S.gen.Gen, ptr %t811, i32 0, i32 2 + %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %t813, i32 0, i32 1 + %t815 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.4724, i64 7, i64 0 }, ptr %a817 + store { ptr, i64, i64 } %t815, ptr %a818 + call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) + %t819 = load { ptr, i64, i64 }, ptr %a816 + store { ptr, i64, i64 } %t819, ptr %a821 + store { ptr, i64, i64 } { ptr @.str.4725, i64 1, i64 0 }, ptr %a822 + call void @finch_str_concat(ptr %a820, ptr %a821, ptr %a822) + %t823 = load { ptr, i64, i64 }, ptr %a820 + %t824 = load { ptr, i64, i64 }, ptr %a749 + store { ptr, i64, i64 } %t823, ptr %a826 + store { ptr, i64, i64 } %t824, ptr %a827 + call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) + %t828 = load { ptr, i64, i64 }, ptr %a825 + store { ptr, i64, i64 } %t828, ptr %a830 + store { ptr, i64, i64 } { ptr @.str.4726, i64 2, i64 0 }, ptr %a831 + call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a829 + %t833 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t834 = load { ptr, i64, i64 }, ptr %t833 + store { ptr, i64, i64 } %t832, ptr %a836 + store { ptr, i64, i64 } %t834, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + %t838 = load { ptr, i64, i64 }, ptr %a835 + store { ptr, i64, i64 } %t838, ptr %a840 + store { ptr, i64, i64 } { ptr @.str.4727, i64 1, i64 0 }, ptr %a841 + call void @finch_str_concat(ptr %a839, ptr %a840, ptr %a841) + %t842 = load { ptr, i64, i64 }, ptr %a839 + %t843 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4728, i64 2, i64 0 }, ptr %a844 + call void @finch_str_join(ptr %a845, ptr %a235, ptr %a844) + %t846 = load { ptr, i64, i64 }, ptr %a845 + store { ptr, i64, i64 } %t842, ptr %a848 + store { ptr, i64, i64 } %t846, ptr %a849 + call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) + %t850 = load { ptr, i64, i64 }, ptr %a847 + %t851 = load { ptr, i64, i64 }, ptr %a761 + store { ptr, i64, i64 } %t850, ptr %a853 + store { ptr, i64, i64 } %t851, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a852 + store { ptr, i64, i64 } %t855, ptr %a857 + store { ptr, i64, i64 } { ptr @.str.4729, i64 1, i64 0 }, ptr %a858 + call void @finch_str_concat(ptr %a856, ptr %a857, ptr %a858) + %t859 = load { ptr, i64, i64 }, ptr %a856 + %t860 = load i64, ptr %t814 + %t861 = add i64 %t860, 1 + call void @finch_arr_reserve(ptr %t813, i64 %t861, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t862 = load ptr, ptr %t813 + %t863 = getelementptr inbounds { ptr, i64, i64 }, ptr %t862, i64 %t860 + store { ptr, i64, i64 } %t859, ptr %t863 + store i64 %t861, ptr %t814 + br label %endif7287 +endif7287: + br label %endif7282 +endif7282: + store { ptr, i64, i64 } { ptr @.str.4730, i64 0, i64 0 }, ptr %a864 + %t865 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t866 = load i1, ptr %t865 + br i1 %t866, label %then7290, label %endif7292 +then7290: + %t867 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4732, i64 2, i64 0 }, ptr %a868 + call void @finch_str_join(ptr %a869, ptr %a235, ptr %a868) + %t870 = load { ptr, i64, i64 }, ptr %a869 + store { ptr, i64, i64 } { ptr @.str.4731, i64 2, i64 0 }, ptr %a872 + store { ptr, i64, i64 } %t870, ptr %a873 + call void @finch_str_concat(ptr %a871, ptr %a872, ptr %a873) + %t874 = load { ptr, i64, i64 }, ptr %a871 + %t875 = load { ptr, i64, i64 }, ptr %a761 + store { ptr, i64, i64 } %t874, ptr %a877 + store { ptr, i64, i64 } %t875, ptr %a878 + call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) + %t879 = load { ptr, i64, i64 }, ptr %a876 + store { ptr, i64, i64 } %t879, ptr %a881 + store { ptr, i64, i64 } { ptr @.str.4733, i64 1, i64 0 }, ptr %a882 + call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) + %t883 = load { ptr, i64, i64 }, ptr %a880 + store { ptr, i64, i64 } %t883, ptr %a864 + br label %endif7292 +endif7292: + %t884 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.4734, i64 4, i64 0 }, ptr %a886 + store { ptr, i64, i64 } %t884, ptr %a887 + call void @finch_str_concat(ptr %a885, ptr %a886, ptr %a887) + %t888 = load { ptr, i64, i64 }, ptr %a885 + store { ptr, i64, i64 } %t888, ptr %a890 + store { ptr, i64, i64 } { ptr @.str.4735, i64 1, i64 0 }, ptr %a891 + call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) + %t892 = load { ptr, i64, i64 }, ptr %a889 + %t893 = load { ptr, i64, i64 }, ptr %a749 + store { ptr, i64, i64 } %t892, ptr %a895 + store { ptr, i64, i64 } %t893, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + %t897 = load { ptr, i64, i64 }, ptr %a894 + %t898 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } %t897, ptr %a900 + store { ptr, i64, i64 } %t898, ptr %a901 + call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) + %t902 = load { ptr, i64, i64 }, ptr %a899 + store { ptr, i64, i64 } %t902, ptr %a904 + store { ptr, i64, i64 } { ptr @.str.4736, i64 2, i64 0 }, ptr %a905 + call void @finch_str_concat(ptr %a903, ptr %a904, ptr %a905) + %t906 = load { ptr, i64, i64 }, ptr %a903 + %t907 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t908 = load { ptr, i64, i64 }, ptr %t907 + store { ptr, i64, i64 } %t906, ptr %a910 + store { ptr, i64, i64 } %t908, ptr %a911 + call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) + %t912 = load { ptr, i64, i64 }, ptr %a909 + store { ptr, i64, i64 } %t912, ptr %a914 + store { ptr, i64, i64 } { ptr @.str.4737, i64 1, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + %t916 = load { ptr, i64, i64 }, ptr %a913 + %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4738, i64 2, i64 0 }, ptr %a918 + call void @finch_str_join(ptr %a919, ptr %a236, ptr %a918) + %t920 = load { ptr, i64, i64 }, ptr %a919 + store { ptr, i64, i64 } %t916, ptr %a922 + store { ptr, i64, i64 } %t920, ptr %a923 + call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) + %t924 = load { ptr, i64, i64 }, ptr %a921 + store { ptr, i64, i64 } %t924, ptr %a926 + store { ptr, i64, i64 } { ptr @.str.4739, i64 1, i64 0 }, ptr %a927 + call void @finch_str_concat(ptr %a925, ptr %a926, ptr %a927) + %t928 = load { ptr, i64, i64 }, ptr %a925 + store { ptr, i64, i64 } %t928, ptr %a929 + %t930 = getelementptr inbounds %S.ast.Type, ptr %a192, i32 0, i32 0 + %t931 = load { ptr, i64, i64 }, ptr %t930 + store { ptr, i64, i64 } %t931, ptr %a932 + store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a933 + %t934 = call i32 @finch_str_eq(ptr %a932, ptr %a933) + %t935 = icmp ne i32 %t934, 0 + br i1 %t935, label %then7293, label %endif7295 +then7293: + %t936 = load ptr, ptr %a1 + %t937 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.emit(ptr %t936, { ptr, i64, i64 } %t937) + %t938 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t938, ptr %a939 + call void @finch.copy.S_ast_Type(ptr %a940, ptr %a939) + %t941 = load %S.ast.Type, ptr %a940 + %t942 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t941, 1 + ret %S.gen.Val %t942 +endif7295: + %t943 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 3 + %t944 = load i1, ptr %t943 + br i1 %t944, label %then7296, label %endif7298 +then7296: + %t945 = load ptr, ptr %a1 + %t946 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.emit(ptr %t945, { ptr, i64, i64 } %t946) + %t947 = load ptr, ptr %a1 + %t948 = load ptr, ptr %a1 + %t949 = load %S.ast.Type, ptr %a192 + %t950 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t948, %S.ast.Type %t949) + %t951 = load { ptr, i64, i64 }, ptr %a237 + %t952 = call { ptr, i64, i64 } @finch.gen.load(ptr %t947, { ptr, i64, i64 } %t950, { ptr, i64, i64 } %t951) + %t953 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t952, 0 + %t954 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t954, ptr %a955 + call void @finch.copy.S_ast_Type(ptr %a956, ptr %a955) + %t957 = load %S.ast.Type, ptr %a956 + %t958 = insertvalue %S.gen.Val %t953, %S.ast.Type %t957, 1 + ret %S.gen.Val %t958 +endif7298: + %t959 = load ptr, ptr %a1 + %t960 = load { ptr, i64, i64 }, ptr %a929 + %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t959, { ptr, i64, i64 } %t960) + store { ptr, i64, i64 } %t961, ptr %a962 + %t963 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 0 + %t964 = getelementptr inbounds %S.gen.Abi, ptr %t963, i32 0, i32 0 + %t965 = load { ptr, i64, i64 }, ptr %t964 + store { ptr, i64, i64 } %t965, ptr %a966 + store { ptr, i64, i64 } { ptr @.str.4741, i64 6, i64 0 }, ptr %a967 + %t968 = call i32 @finch_str_eq(ptr %a966, ptr %a967) + %t969 = icmp ne i32 %t968, 0 + br i1 %t969, label %then7299, label %endif7301 +then7299: + %t970 = load ptr, ptr %a1 + %t971 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t970, { ptr, i64, i64 } { ptr @.str.4742, i64 9, i64 0 }) + store { ptr, i64, i64 } %t971, ptr %a972 + %t973 = load ptr, ptr %a1 + %t974 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 0 + %t975 = getelementptr inbounds %S.gen.Abi, ptr %t974, i32 0, i32 2 + %t976 = load { ptr, i64, i64 }, ptr %t975 + %t977 = load { ptr, i64, i64 }, ptr %a962 + %t978 = load { ptr, i64, i64 }, ptr %a972 + call void @finch.gen.store(ptr %t973, { ptr, i64, i64 } %t976, { ptr, i64, i64 } %t977, { ptr, i64, i64 } %t978) + %t979 = load ptr, ptr %a1 + %t980 = load ptr, ptr %a1 + %t981 = load %S.ast.Type, ptr %a192 + %t982 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t980, %S.ast.Type %t981) + %t983 = load { ptr, i64, i64 }, ptr %a972 + %t984 = call { ptr, i64, i64 } @finch.gen.load(ptr %t979, { ptr, i64, i64 } %t982, { ptr, i64, i64 } %t983) + %t985 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t984, 0 + %t986 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t986, ptr %a987 + call void @finch.copy.S_ast_Type(ptr %a988, ptr %a987) + %t989 = load %S.ast.Type, ptr %a988 + %t990 = insertvalue %S.gen.Val %t985, %S.ast.Type %t989, 1 + ret %S.gen.Val %t990 +endif7301: + %t991 = getelementptr inbounds %S.ast.Type, ptr %a192, i32 0, i32 0 + %t992 = load { ptr, i64, i64 }, ptr %t991 + store { ptr, i64, i64 } %t992, ptr %a993 + store { ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }, ptr %a994 + %t995 = call i32 @finch_str_eq(ptr %a993, ptr %a994) + %t996 = icmp ne i32 %t995, 0 + br i1 %t996, label %then7302, label %endif7304 +then7302: + %t997 = load ptr, ptr %a1 + %t998 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t997) + store { ptr, i64, i64 } %t998, ptr %a999 + %t1000 = load ptr, ptr %a1 + %t1001 = load { ptr, i64, i64 }, ptr %a999 + call void @finch.gen.store(ptr %t1000, { ptr, i64, i64 } { ptr @.str.4744, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4745, i64 15, i64 0 }, { ptr, i64, i64 } %t1001) + %t1002 = load ptr, ptr %a1 + %t1003 = load { ptr, i64, i64 }, ptr %a999 + store { ptr, i64, i64 } { ptr @.str.4746, i64 32, i64 0 }, ptr %a1005 + store { ptr, i64, i64 } %t1003, ptr %a1006 + call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) + %t1007 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } %t1007, ptr %a1009 + store { ptr, i64, i64 } { ptr @.str.4747, i64 6, i64 0 }, ptr %a1010 + call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1008 + %t1012 = load { ptr, i64, i64 }, ptr %a962 + store { ptr, i64, i64 } %t1011, ptr %a1014 + store { ptr, i64, i64 } %t1012, ptr %a1015 + call void @finch_str_concat(ptr %a1013, ptr %a1014, ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1013 + store { ptr, i64, i64 } %t1016, ptr %a1018 + store { ptr, i64, i64 } { ptr @.str.4748, i64 1, i64 0 }, ptr %a1019 + call void @finch_str_concat(ptr %a1017, ptr %a1018, ptr %a1019) + %t1020 = load { ptr, i64, i64 }, ptr %a1017 + call void @finch.gen.emit(ptr %t1002, { ptr, i64, i64 } %t1020) + %t1021 = load ptr, ptr %a1 + %t1022 = load { ptr, i64, i64 }, ptr %a999 + %t1023 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1021, { ptr, i64, i64 } { ptr @.str.4749, i64 17, i64 0 }, { ptr, i64, i64 } %t1022) + %t1024 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1023, 0 + %t1025 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t1025, ptr %a1026 + call void @finch.copy.S_ast_Type(ptr %a1027, ptr %a1026) + %t1028 = load %S.ast.Type, ptr %a1027 + %t1029 = insertvalue %S.gen.Val %t1024, %S.ast.Type %t1028, 1 + ret %S.gen.Val %t1029 +endif7304: + %t1030 = load { ptr, i64, i64 }, ptr %a962 + store { ptr, i64, i64 } %t1030, ptr %a1031 + call void @finch_str_copy(ptr %a1032, ptr %a1031) + %t1033 = load { ptr, i64, i64 }, ptr %a1032 + %t1034 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1033, 0 + %t1035 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t1035, ptr %a1036 + call void @finch.copy.S_ast_Type(ptr %a1037, ptr %a1036) + %t1038 = load %S.ast.Type, ptr %a1037 + %t1039 = insertvalue %S.gen.Val %t1034, %S.ast.Type %t1038, 1 + ret %S.gen.Val %t1039 +} + +define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca i64, align 16 + %a18 = alloca i64, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = 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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.4751, i64 6, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.4752, 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 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 + store { ptr, i64, i64 } { ptr @.str.4754, i64 5, i64 0 }, ptr %t8 + %t9 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t10 = insertvalue { ptr, i64, i64 } %t9, i64 5, 1 + %t11 = insertvalue { ptr, i64, i64 } %t10, i64 5, 2 + store { ptr, i64, i64 } %t11, ptr %a12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a12, i32 0, i32 1 + %t14 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a15 + %t16 = load i64, ptr %t13 + %t17 = load ptr, ptr %a12 + store i64 0, ptr %a18 + br label %find.cond7305 +find.cond7305: + %t19 = load i64, ptr %a18 + %t20 = icmp slt i64 %t19, %t16 + br i1 %t20, label %find.body7306, label %find.end7309 +find.body7306: + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i64 %t19 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + store { ptr, i64, i64 } %t14, ptr %a24 + %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) + %t26 = icmp ne i32 %t25, 0 + br i1 %t26, label %find.hit7307, label %find.next7308 +find.hit7307: + store i64 %t19, ptr %a15 + br label %find.end7309 +find.next7308: + %t27 = add i64 %t19, 1 + store i64 %t27, ptr %a18 + br label %find.cond7305 +find.end7309: + %t28 = load i64, ptr %a15 + %t29 = icmp sge i64 %t28, 0 + ret i1 %t29 +} + +define internal { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca i64, align 16 + %a65 = alloca i64, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca i64, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a90 = 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 = 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 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 + store { ptr, i64, i64 } { ptr @.str.4756, i64 4, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 + store { ptr, i64, i64 } { ptr @.str.4757, 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 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 + store { ptr, i64, i64 } { ptr @.str.4759, i64 5, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 + store { ptr, i64, i64 } { ptr @.str.4760, 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 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 + store { ptr, i64, i64 } { ptr @.str.4762, i64 3, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 + store { ptr, i64, i64 } { ptr @.str.4763, 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 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 + store { ptr, i64, i64 } { ptr @.str.4765, i64 5, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 + store { ptr, i64, i64 } { ptr @.str.4766, 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 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 + store { ptr, i64, i64 } { ptr @.str.4768, i64 4, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 + store { ptr, i64, i64 } { ptr @.str.4769, 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 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 + store { ptr, i64, i64 } { ptr @.str.4771, i64 4, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 + store { ptr, i64, i64 } { ptr @.str.4772, 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 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 + store { ptr, i64, i64 } { ptr @.str.4774, i64 6, i64 0 }, ptr %t23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 + store { ptr, i64, i64 } { ptr @.str.4775, 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 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 + store { ptr, i64, i64 } { ptr @.str.4777, i64 6, i64 0 }, ptr %t26 + %t27 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t28 = insertvalue { ptr, i64, i64 } %t27, i64 23, 1 + %t29 = insertvalue { ptr, i64, i64 } %t28, i64 23, 2 + store { ptr, i64, i64 } %t29, ptr %a30 + %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 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 + store { ptr, i64, i64 } { ptr @.str.4779, i64 7, i64 0 }, ptr %t34 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 + store { ptr, i64, i64 } { ptr @.str.4780, 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 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 + store { ptr, i64, i64 } { ptr @.str.4782, i64 7, i64 0 }, ptr %t37 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 + store { ptr, i64, i64 } { ptr @.str.4783, 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 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 + store { ptr, i64, i64 } { ptr @.str.4785, i64 6, i64 0 }, ptr %t40 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 + store { ptr, i64, i64 } { ptr @.str.4786, 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 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 + store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t43 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 + store { ptr, i64, i64 } { ptr @.str.4789, 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 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 + store { ptr, i64, i64 } { ptr @.str.4791, i64 8, i64 0 }, ptr %t46 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 + store { ptr, i64, i64 } { ptr @.str.4792, 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 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 + store { ptr, i64, i64 } { ptr @.str.4794, i64 8, i64 0 }, ptr %t49 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 + store { ptr, i64, i64 } { ptr @.str.4795, 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 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 + store { ptr, i64, i64 } { ptr @.str.4797, i64 8, i64 0 }, ptr %t52 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 + store { ptr, i64, i64 } { ptr @.str.4798, 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 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 + store { ptr, i64, i64 } { ptr @.str.4800, i64 8, i64 0 }, ptr %t55 + %t56 = insertvalue { ptr, i64, i64 } undef, ptr %t32, 0 + %t57 = insertvalue { ptr, i64, i64 } %t56, i64 23, 1 + %t58 = insertvalue { ptr, i64, i64 } %t57, i64 23, 2 + store { ptr, i64, i64 } %t58, ptr %a59 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 + %t61 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a62 + %t63 = load i64, ptr %t60 + %t64 = load ptr, ptr %a30 + store i64 0, ptr %a65 + br label %find.cond7310 +find.cond7310: + %t66 = load i64, ptr %a65 + %t67 = icmp slt i64 %t66, %t63 + br i1 %t67, label %find.body7311, label %find.end7314 +find.body7311: + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t66 + %t69 = load { ptr, i64, i64 }, ptr %t68 + store { ptr, i64, i64 } %t69, ptr %a70 + store { ptr, i64, i64 } %t61, ptr %a71 + %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) + %t73 = icmp ne i32 %t72, 0 + br i1 %t73, label %find.hit7312, label %find.next7313 +find.hit7312: + store i64 %t66, ptr %a62 + br label %find.end7314 +find.next7313: + %t74 = add i64 %t66, 1 + store i64 %t74, ptr %a65 + br label %find.cond7310 +find.end7314: + %t75 = load i64, ptr %a62 + store i64 %t75, ptr %a76 + %t77 = load i64, ptr %a76 + %t78 = icmp slt i64 %t77, 0 + br i1 %t78, label %then7315, label %endif7317 +then7315: + ret { ptr, i64, i64 } { ptr @.str.4801, i64 0, i64 0 } +endif7317: + %t79 = load i64, ptr %a76 + %t80 = load { ptr, i64, i64 }, ptr %a59 + %t81 = extractvalue { ptr, i64, i64 } %t80, 1 + %t82 = icmp uge i64 %t79, %t81 + br i1 %t82, label %range7318, label %inrange7319 +range7318: + call void @finch_panic_index(ptr @.str.4803, i64 4299, i64 %t79, i64 %t81) + unreachable +inrange7319: + %t83 = extractvalue { ptr, i64, i64 } %t80, 0 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t79 + %t85 = load { ptr, i64, i64 }, ptr %t84 + store { ptr, i64, i64 } { ptr @.str.4802, i64 28, i64 0 }, ptr %a87 + store { ptr, i64, i64 } %t85, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t89, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.4804, i64 14, i64 0 }, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a90 + ret { ptr, i64, i64 } %t93 +} + +define internal %S.gen.Val @finch.gen.call(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %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 + %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 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca %S.ast.Type, align 16 + %a218 = alloca %S.ast.Type, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a329 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = 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 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a361 = alloca { ptr, i64, i64 }, align 16 + %a362 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a410 = alloca { ptr, i64, i64 }, align 16 + %a422 = 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 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a453 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 + %a458 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %a625 = alloca { ptr, i64, i64 }, align 16 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a629 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a716 = alloca { ptr, i64, i64 }, align 16 + %a717 = alloca { ptr, i64, i64 }, align 16 + %a727 = alloca { ptr, i64, i64 }, align 16 + %a728 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 + %a757 = alloca { ptr, i64, i64 }, align 16 + %a764 = alloca { ptr, i64, i64 }, align 16 + %a765 = alloca { ptr, i64, i64 }, align 16 + %a770 = 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 + %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 + %a794 = alloca { ptr, i64, i64 }, align 16 + %a795 = alloca { ptr, i64, i64 }, align 16 + %a797 = alloca { ptr, i64, i64 }, align 16 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a799 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a806 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a888 = alloca { ptr, i64, i64 }, align 16 + %a889 = alloca { ptr, i64, i64 }, align 16 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca { ptr, i64, i64 }, align 16 + %a896 = alloca { ptr, i64, i64 }, align 16 + %a898 = 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 + %a909 = alloca { ptr, i64, i64 }, align 16 + %a914 = 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 + %a945 = alloca { ptr, i64, i64 }, align 16 + %a946 = alloca { ptr, i64, i64 }, align 16 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a966 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a968 = alloca { ptr, i64, i64 }, align 16 + %a971 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 + %a976 = alloca { ptr, i64, i64 }, align 16 + %a978 = alloca { ptr, i64, i64 }, align 16 + %a979 = alloca { ptr, i64, i64 }, align 16 + %a980 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca { ptr, i64, i64 }, align 16 + %a988 = alloca { ptr, i64, i64 }, align 16 + %a1003 = alloca %S.gen.Val, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1009 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 + %a1011 = alloca { ptr, i64, i64 }, align 16 + %a1013 = alloca { ptr, i64, i64 }, align 16 + %a1014 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1020 = alloca { ptr, i64, i64 }, align 16 + %a1021 = alloca { ptr, i64, i64 }, align 16 + %a1022 = alloca { ptr, i64, i64 }, align 16 + %a1024 = alloca { ptr, i64, i64 }, align 16 + %a1025 = alloca { ptr, i64, i64 }, align 16 + %a1026 = alloca { ptr, i64, i64 }, align 16 + %a1030 = alloca { ptr, i64, i64 }, align 16 + %a1031 = alloca { ptr, i64, i64 }, align 16 + %a1032 = alloca { ptr, i64, i64 }, align 16 + %a1034 = alloca { ptr, i64, i64 }, align 16 + %a1035 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1043 = alloca { ptr, i64, i64 }, align 16 + %a1044 = alloca { ptr, i64, i64 }, align 16 + %a1069 = alloca %S.gen.Val, align 16 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1074 = alloca { ptr, i64, i64 }, align 16 + %a1075 = alloca { ptr, i64, i64 }, align 16 + %a1077 = alloca { ptr, i64, i64 }, align 16 + %a1078 = alloca { ptr, i64, i64 }, align 16 + %a1079 = alloca { ptr, i64, i64 }, align 16 + %a1082 = alloca { ptr, i64, i64 }, align 16 + %a1085 = alloca { ptr, i64, i64 }, align 16 + %a1088 = alloca { ptr, i64, i64 }, align 16 + %a1089 = alloca { ptr, i64, i64 }, align 16 + %a1090 = alloca { ptr, i64, i64 }, align 16 + %a1092 = alloca { ptr, i64, i64 }, align 16 + %a1093 = alloca { ptr, i64, i64 }, align 16 + %a1094 = alloca { ptr, i64, i64 }, align 16 + %a1099 = alloca { ptr, i64, i64 }, align 16 + %a1100 = alloca { ptr, i64, i64 }, align 16 + %a1105 = alloca %S.gen.Val, align 16 + %a1124 = alloca { ptr, i64, i64 }, align 16 + %a1127 = alloca { ptr, i64, i64 }, align 16 + %a1128 = alloca { ptr, i64, i64 }, align 16 + %a1129 = alloca { ptr, i64, i64 }, align 16 + %a1131 = alloca { ptr, i64, i64 }, align 16 + %a1132 = alloca { ptr, i64, i64 }, align 16 + %a1133 = alloca { ptr, i64, i64 }, align 16 + %a1138 = alloca { ptr, i64, i64 }, align 16 + %a1139 = alloca { ptr, i64, i64 }, align 16 + %a1140 = alloca { ptr, i64, i64 }, align 16 + %a1142 = alloca { ptr, i64, i64 }, align 16 + %a1143 = alloca { ptr, i64, i64 }, align 16 + %a1144 = alloca { ptr, i64, i64 }, align 16 + %a1154 = alloca { ptr, i64, i64 }, align 16 + %a1155 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca %S.gen.Val, align 16 + %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1177 = alloca { ptr, i64, i64 }, align 16 + %a1178 = alloca { ptr, i64, i64 }, align 16 + %a1180 = alloca { ptr, i64, i64 }, align 16 + %a1181 = alloca { ptr, i64, i64 }, align 16 + %a1182 = alloca { ptr, i64, i64 }, align 16 + %a1185 = alloca { ptr, i64, i64 }, align 16 + %a1196 = alloca { ptr, i64, i64 }, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 + %a1205 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca { ptr, i64, i64 }, align 16 + %a1221 = alloca %S.gen.Val, align 16 + %a1225 = alloca { ptr, i64, i64 }, align 16 + %a1226 = alloca { ptr, i64, i64 }, align 16 + %a1240 = alloca { ptr, i64, i64 }, align 16 + %a1241 = alloca { ptr, i64, i64 }, align 16 + %a1242 = alloca { ptr, i64, i64 }, align 16 + %a1244 = alloca { ptr, i64, i64 }, align 16 + %a1245 = alloca { ptr, i64, i64 }, align 16 + %a1246 = alloca { ptr, i64, i64 }, align 16 + %a1257 = alloca i64, align 16 + %a1268 = alloca { ptr, i64, i64 }, align 16 + %a1269 = alloca { ptr, i64, i64 }, align 16 + %a1270 = alloca { ptr, i64, i64 }, align 16 + %a1272 = alloca { ptr, i64, i64 }, align 16 + %a1273 = alloca { ptr, i64, i64 }, align 16 + %a1274 = alloca { ptr, i64, i64 }, align 16 + %a1288 = alloca i64, align 16 + %a1312 = alloca { ptr, i64, i64 }, align 16 + %a1313 = alloca { ptr, i64, i64 }, align 16 + %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1316 = alloca { ptr, i64, i64 }, align 16 + %a1317 = alloca { ptr, i64, i64 }, align 16 + %a1318 = alloca { ptr, i64, i64 }, align 16 + %a1321 = alloca { ptr, i64, i64 }, align 16 + %a1322 = alloca { ptr, i64, i64 }, align 16 + %a1323 = alloca { ptr, i64, i64 }, align 16 + %a1325 = alloca { ptr, i64, i64 }, align 16 + %a1326 = alloca { ptr, i64, i64 }, align 16 + %a1327 = alloca { ptr, i64, i64 }, align 16 + %a1329 = alloca { ptr, i64, i64 }, align 16 + %a1332 = alloca i64, align 16 + %a1340 = alloca %S.ast.Type, align 16 + %a1361 = alloca %S.ast.Type, align 16 + %a1382 = alloca i64, align 16 + %a1395 = alloca %S.gen.StructDef, align 16 + %a1396 = alloca %S.gen.StructDef, align 16 + %a1398 = alloca %S.gen.StructDef, align 16 + %a1426 = alloca %S.ast.Node, align 16 + %a1427 = alloca %S.ast.Node, align 16 + %a1429 = alloca %S.ast.Node, align 16 + %a1438 = alloca { ptr, i64, i64 }, align 16 + %a1439 = alloca { ptr, i64, i64 }, align 16 + %a1440 = alloca { ptr, i64, i64 }, align 16 + %a1442 = alloca { ptr, i64, i64 }, align 16 + %a1443 = alloca { ptr, i64, i64 }, align 16 + %a1444 = alloca { ptr, i64, i64 }, align 16 + %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1449 = alloca { ptr, i64, i64 }, align 16 + %a1451 = alloca { ptr, i64, i64 }, align 16 + %a1452 = alloca { ptr, i64, i64 }, align 16 + %a1453 = alloca { ptr, i64, i64 }, align 16 + %a1455 = alloca { ptr, i64, i64 }, align 16 + %a1456 = alloca { ptr, i64, i64 }, align 16 + %a1457 = alloca { ptr, i64, i64 }, align 16 + %a1489 = alloca i64, align 16 + %a1501 = alloca { ptr, i64, i64 }, align 16 + %a1511 = alloca { ptr, i64, i64 }, align 16 + %a1514 = alloca { ptr, i64, i64 }, align 16 + %a1515 = alloca { ptr, i64, i64 }, align 16 + %a1542 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca { ptr, i64, i64 }, align 16 + %a1544 = alloca { ptr, i64, i64 }, align 16 + %a1546 = alloca { ptr, i64, i64 }, align 16 + %a1547 = alloca { ptr, i64, i64 }, align 16 + %a1548 = alloca { ptr, i64, i64 }, align 16 + %a1553 = alloca { ptr, i64, i64 }, align 16 + %a1554 = alloca { ptr, i64, i64 }, align 16 + %a1555 = alloca { ptr, i64, i64 }, align 16 + %a1557 = alloca { ptr, i64, i64 }, align 16 + %a1558 = alloca { ptr, i64, i64 }, align 16 + %a1559 = alloca { ptr, i64, i64 }, align 16 + %a1563 = alloca { ptr, i64, i64 }, align 16 + %a1564 = alloca { ptr, i64, i64 }, align 16 + %a1565 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t4 = load { ptr, i64, i64 }, ptr %t3 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic7320, label %ok7321 +panic7320: + call void @finch_panic(ptr @.str.4805, i64 4304, ptr @.str.4806) + unreachable +ok7321: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 + %t12 = load i1, ptr %t11 + br label %logic.from7322 +logic.from7322: + br i1 %t12, label %logic.rhs7323, label %logic.end7324 +logic.rhs7323: + %t13 = load { ptr, i64, i64 }, ptr %a8 + %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) + br label %logic.rend7325 +logic.rend7325: + br label %logic.end7324 +logic.end7324: + %t15 = phi i1 [ false, %logic.from7322 ], [ %t14, %logic.rend7325 ] + br i1 %t15, label %then7326, label %endif7328 +then7326: + %t16 = call { ptr, i64, i64 } @finch.docs.builtins() + %t17 = load { ptr, i64, i64 }, ptr %a8 + %t18 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t16, { ptr, i64, i64 } %t17) + store %S.docs.Doc %t18, ptr %a19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %a19, i32 0, i32 0 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = icmp sgt i64 %t22, 0 + br i1 %t23, label %then7329, label %endif7331 +then7329: + %t24 = load ptr, ptr %a1 + %t25 = load %S.ast.Node, ptr %a2 + %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t27 = load i64, ptr %t26 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = load %S.docs.Doc, ptr %a19 + %t31 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t30) + call void @finch.gen.noteRef(ptr %t24, %S.ast.Node %t25, i64 %t27, i64 %t29, { ptr, i64, i64 } %t31, { ptr, i64, i64 } { ptr @.str.4807, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7331 +endif7331: + br label %endif7328 +endif7328: + %t32 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.4808, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br i1 %t36, label %then7332, label %endif7334 +then7332: + %t37 = load ptr, ptr %a1 + %t38 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } { ptr @.str.4809, i64 86, i64 0 }) + br label %endif7334 +endif7334: + %t39 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t39, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.4810, i64 5, i64 0 }, ptr %a41 + %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) + %t43 = icmp ne i32 %t42, 0 + br i1 %t43, label %then7335, label %endif7337 +then7335: + %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load i64, ptr %t45 + store i64 0, ptr %a47 + br label %for.cond7338 +for.cond7338: + %t48 = load i64, ptr %a47 + %t49 = icmp slt i64 %t48, %t46 + br i1 %t49, label %for.body7339, label %for.end7341 +for.body7339: + %t50 = load ptr, ptr %a1 + %t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t52 = load i64, ptr %a47 + %t53 = load { ptr, i64, i64 }, ptr %t51 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range7342, label %inrange7343 +range7342: + call void @finch_panic_index(ptr @.str.4811, i64 4315, i64 %t52, i64 %t54) + unreachable +inrange7343: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds %S.ast.Node, ptr %t56, i64 %t52 + %t58 = load %S.ast.Node, ptr %t57 + %t59 = call %S.gen.Val @finch.gen.expr(ptr %t50, %S.ast.Node %t58) + store %S.gen.Val %t59, ptr %a60 + %t61 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 1 + %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.4812, i64 4, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) + %t67 = icmp ne i32 %t66, 0 + br i1 %t67, label %then7344, label %endif7346 +then7344: + %t68 = load ptr, ptr %a1 + %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t70 = load i64, ptr %a47 + %t71 = load { ptr, i64, i64 }, ptr %t69 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 %t70, %t72 + br i1 %t73, label %range7347, label %inrange7348 +range7347: + call void @finch_panic_index(ptr @.str.4813, i64 4317, i64 %t70, i64 %t72) + unreachable +inrange7348: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t70 + %t76 = load %S.ast.Node, ptr %t75 + call void @finch.gen.fail(ptr %t68, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.4814, i64 53, i64 0 }) + br label %endif7346 +endif7346: + %t77 = load i64, ptr %a47 + %t78 = icmp sgt i64 %t77, 0 + br i1 %t78, label %then7349, label %endif7351 +then7349: + %t79 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t79, { ptr, i64, i64 } { ptr @.str.4815, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4816, i64 0, i64 0 }) + br label %endif7351 +endif7351: + %t80 = load ptr, ptr %a1 + %t81 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 1 + %t84 = load %S.ast.Type, ptr %t83 + call void @finch.gen.emitPrint(ptr %t80, { ptr, i64, i64 } %t82, %S.ast.Type %t84, i1 false) + br label %for.step7340 +for.step7340: + %t85 = load i64, ptr %a47 + %t86 = add i64 %t85, 1 + store i64 %t86, ptr %a47 + br label %for.cond7338 +for.end7341: + %t87 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t87, { ptr, i64, i64 } { ptr @.str.4817, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4818, i64 0, i64 0 }) + %t88 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4819, i64 4, i64 0 }) + %t89 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t88, 1 + ret %S.gen.Val %t89 +endif7337: + %t90 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t90, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.4820, i64 4, i64 0 }, ptr %a92 + %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) + %t94 = icmp ne i32 %t93, 0 + br i1 %t94, label %then7352, label %endif7354 +then7352: + %t95 = load ptr, ptr %a1 + %t96 = load %S.ast.Node, ptr %a2 + %t97 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t95, %S.ast.Node %t96, i64 0, i64 1, { ptr, i64, i64 } %t97) + %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t99 = load { ptr, i64, i64 }, ptr %t98 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 0, %t100 + br i1 %t101, label %range7355, label %inrange7356 +range7355: + call void @finch_panic_index(ptr @.str.4821, i64 4329, i64 0, i64 %t100) + unreachable +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) + 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) + unreachable +inrange7384: + %t188 = extractvalue { ptr, i64, i64 } %t185, 0 + %t189 = getelementptr inbounds %S.ast.Node, ptr %t188, i64 0 + %t190 = load %S.ast.Node, ptr %t189 + %t191 = call %S.gen.Val @finch.gen.expr(ptr %t183, %S.ast.Node %t190) + store %S.gen.Val %t191, ptr %a192 + %t193 = load ptr, ptr %a1 + %t194 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t193) + store { ptr, i64, i64 } %t194, ptr %a195 + %t196 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t197 = getelementptr inbounds %S.ast.Type, ptr %t196, i32 0, i32 0 + %t198 = load { ptr, i64, i64 }, ptr %t197 + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_copy(ptr %a200, ptr %a199) + %t201 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t201, ptr %a202 + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t203, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.4832, i64 3, i64 0 }, ptr %a205 + %t206 = call i32 @finch_str_eq(ptr %a204, ptr %a205) + %t207 = icmp ne i32 %t206, 0 + br i1 %t207, label %then7385, label %else7386 +then7385: + %t208 = load ptr, ptr %a1 + %t209 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t210 = load { ptr, i64, i64 }, ptr %t209 + %t211 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t212 = load %S.ast.Type, ptr %t211 + %t213 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t208, { ptr, i64, i64 } %t210, %S.ast.Type %t212) + %t214 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t213, 0 + %t215 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t216 = load %S.ast.Type, ptr %t215 + store %S.ast.Type %t216, ptr %a217 + call void @finch.copy.S_ast_Type(ptr %a218, ptr %a217) + %t219 = load %S.ast.Type, ptr %a218 + %t220 = insertvalue %S.gen.Val %t214, %S.ast.Type %t219, 1 + %t221 = insertvalue %S.gen.Val %t220, i1 true, 2 + ret %S.gen.Val %t221 +else7386: + %t222 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t223 = load %S.ast.Type, ptr %t222 + %t224 = call i1 @finch.gen.isSigned(%S.ast.Type %t223) + br i1 %t224, label %then7388, label %else7389 +then7388: + %t225 = load ptr, ptr %a1 + %t226 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4833, i64 34, i64 0 }, ptr %a228 + store { ptr, i64, i64 } %t226, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + %t230 = load { ptr, i64, i64 }, ptr %a227 + store { ptr, i64, i64 } %t230, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a231 + %t235 = load ptr, ptr %a1 + %t236 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t237 = load { ptr, i64, i64 }, ptr %t236 + %t238 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t239 = load %S.ast.Type, ptr %t238 + %t240 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4835, i64 3, i64 0 }) + %t241 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t235, { ptr, i64, i64 } %t237, %S.ast.Type %t239, %S.ast.Type %t240) + store { ptr, i64, i64 } %t234, ptr %a243 + store { ptr, i64, i64 } %t241, ptr %a244 + call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a242 + store { ptr, i64, i64 } %t245, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a246 + call void @finch.gen.emit(ptr %t225, { ptr, i64, i64 } %t249) + br label %endif7390 +else7389: + %t250 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t251 = load %S.ast.Type, ptr %t250 + %t252 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t251) + br i1 %t252, label %then7391, label %else7392 +then7391: + %t253 = load ptr, ptr %a1 + %t254 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4837, i64 35, i64 0 }, ptr %a256 + store { ptr, i64, i64 } %t254, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a255 + store { ptr, i64, i64 } %t258, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.4838, i64 6, i64 0 }, ptr %a261 + call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a259 + %t263 = load ptr, ptr %a1 + %t264 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t265 = load { ptr, i64, i64 }, ptr %t264 + %t266 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t267 = load %S.ast.Type, ptr %t266 + %t268 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4839, i64 3, i64 0 }) + %t269 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t263, { ptr, i64, i64 } %t265, %S.ast.Type %t267, %S.ast.Type %t268) + store { ptr, i64, i64 } %t262, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t273, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.4840, i64 1, i64 0 }, ptr %a276 + call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a274 + call void @finch.gen.emit(ptr %t253, { ptr, i64, i64 } %t277) + br label %endif7393 +else7392: + %t278 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t279 = load %S.ast.Type, ptr %t278 + %t280 = call i1 @finch.gen.isFloat(%S.ast.Type %t279) + br i1 %t280, label %then7394, label %else7395 +then7394: + %t281 = load ptr, ptr %a1 + %t282 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4841, i64 36, i64 0 }, ptr %a284 + store { ptr, i64, i64 } %t282, ptr %a285 + call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) + %t286 = load { ptr, i64, i64 }, ptr %a283 + store { ptr, i64, i64 } %t286, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4842, i64 9, i64 0 }, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + %t291 = load ptr, ptr %a1 + %t292 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t293 = load { ptr, i64, i64 }, ptr %t292 + %t294 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t295 = load %S.ast.Type, ptr %t294 + %t296 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4843, i64 5, i64 0 }) + %t297 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t291, { ptr, i64, i64 } %t293, %S.ast.Type %t295, %S.ast.Type %t296) + store { ptr, i64, i64 } %t290, ptr %a299 + store { ptr, i64, i64 } %t297, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t301, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.4844, i64 1, i64 0 }, ptr %a304 + call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a302 + call void @finch.gen.emit(ptr %t281, { ptr, i64, i64 } %t305) + br label %endif7396 +else7395: + %t306 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t306, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.4845, i64 4, i64 0 }, ptr %a308 + %t309 = call i32 @finch_str_eq(ptr %a307, ptr %a308) + %t310 = icmp ne i32 %t309, 0 + br i1 %t310, label %then7397, label %else7398 +then7397: + %t311 = load ptr, ptr %a1 + %t312 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4846, i64 35, i64 0 }, ptr %a314 + store { ptr, i64, i64 } %t312, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t316, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.4847, i64 13, i64 0 }, ptr %a319 + call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a317 + %t321 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t322 = load { ptr, i64, i64 }, ptr %t321 + store { ptr, i64, i64 } %t320, ptr %a324 + store { ptr, i64, i64 } %t322, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a323 + store { ptr, i64, i64 } %t326, ptr %a328 + store { ptr, i64, i64 } { ptr @.str.4848, i64 1, i64 0 }, ptr %a329 + call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) + %t330 = load { ptr, i64, i64 }, ptr %a327 + call void @finch.gen.emit(ptr %t311, { ptr, i64, i64 } %t330) + br label %endif7399 +else7398: + %t331 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t331, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.4849, i64 4, i64 0 }, ptr %a333 + %t334 = call i32 @finch_str_eq(ptr %a332, ptr %a333) + %t335 = icmp ne i32 %t334, 0 + br i1 %t335, label %then7400, label %else7401 +then7400: + %t336 = load ptr, ptr %a1 + %t337 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t338 = load { ptr, i64, i64 }, ptr %t337 + store { ptr, i64, i64 } { ptr @.str.4850, i64 8, i64 0 }, ptr %a340 + store { ptr, i64, i64 } %t338, ptr %a341 + call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) + %t342 = load { ptr, i64, i64 }, ptr %a339 + store { ptr, i64, i64 } %t342, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.4851, i64 7, i64 0 }, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + %t347 = call { ptr, i64, i64 } @finch.gen.op(ptr %t336, { ptr, i64, i64 } %t346) + store { ptr, i64, i64 } %t347, ptr %a348 + %t349 = load ptr, ptr %a1 + %t350 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4852, i64 35, i64 0 }, ptr %a352 + store { ptr, i64, i64 } %t350, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a351 + store { ptr, i64, i64 } %t354, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.4853, i64 6, i64 0 }, ptr %a357 + call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) + %t358 = load { ptr, i64, i64 }, ptr %a355 + %t359 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t358, ptr %a361 + store { ptr, i64, i64 } %t359, ptr %a362 + call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) + %t363 = load { ptr, i64, i64 }, ptr %a360 + store { ptr, i64, i64 } %t363, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.4854, i64 1, i64 0 }, ptr %a366 + call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a364 + call void @finch.gen.emit(ptr %t349, { ptr, i64, i64 } %t367) + br label %endif7402 +else7401: + %t368 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t368, ptr %a369 + store { ptr, i64, i64 } { ptr @.str.4855, i64 3, i64 0 }, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br i1 %t372, label %then7403, label %else7404 +then7403: + %t373 = load ptr, ptr %a1 + %t374 = load { ptr, i64, i64 }, ptr %a195 + call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.4856, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4857, i64 15, i64 0 }, { ptr, i64, i64 } %t374) + %t375 = load ptr, ptr %a1 + %t376 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4858, i64 32, i64 0 }, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + %t380 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t380, ptr %a382 + store { ptr, i64, i64 } { ptr @.str.4859, i64 6, i64 0 }, ptr %a383 + call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a381 + %t385 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t384, ptr %a388 + store { ptr, i64, i64 } %t386, ptr %a389 + call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a387 + store { ptr, i64, i64 } %t390, ptr %a392 + store { ptr, i64, i64 } { ptr @.str.4860, i64 1, i64 0 }, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a391 + call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t394) + br label %endif7405 +else7404: + %t395 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t395, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4861, i64 5, i64 0 }, ptr %a397 + %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) + %t399 = icmp ne i32 %t398, 0 + br label %logic.from7406 +logic.from7406: + br i1 %t399, label %logic.rhs7407, label %logic.end7408 +logic.rhs7407: + %t400 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t401 = getelementptr inbounds %S.ast.Type, ptr %t400, i32 0, i32 1 + %t402 = load { ptr, i64, i64 }, ptr %t401 + %t403 = extractvalue { ptr, i64, i64 } %t402, 1 + %t404 = icmp uge i64 0, %t403 + br i1 %t404, label %range7409, label %inrange7410 +range7409: + call void @finch_panic_index(ptr @.str.4862, i64 4364, i64 0, i64 %t403) + unreachable +inrange7410: + %t405 = extractvalue { ptr, i64, i64 } %t402, 0 + %t406 = getelementptr inbounds %S.ast.Type, ptr %t405, i64 0 + %t407 = getelementptr inbounds %S.ast.Type, ptr %t406, i32 0, i32 0 + %t408 = load { ptr, i64, i64 }, ptr %t407 + store { ptr, i64, i64 } %t408, ptr %a409 + store { ptr, i64, i64 } { ptr @.str.4863, i64 2, i64 0 }, ptr %a410 + %t411 = call i32 @finch_str_eq(ptr %a409, ptr %a410) + %t412 = icmp ne i32 %t411, 0 + br label %logic.from7411 +logic.from7411: + br i1 %t412, label %logic.end7413, label %logic.rhs7412 +logic.rhs7412: + %t413 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t414 = getelementptr inbounds %S.ast.Type, ptr %t413, i32 0, i32 1 + %t415 = load { ptr, i64, i64 }, ptr %t414 + %t416 = extractvalue { ptr, i64, i64 } %t415, 1 + %t417 = icmp uge i64 0, %t416 + br i1 %t417, label %range7414, label %inrange7415 +range7414: + call void @finch_panic_index(ptr @.str.4864, i64 4364, i64 0, i64 %t416) + unreachable +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) + store { ptr, i64, i64 } %t521, ptr %a522 + %t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %a522, i32 0, i32 1 + %t524 = load i64, ptr %t523 + %t525 = icmp sgt i64 %t524, 0 + br i1 %t525, label %then7446, label %endif7448 +then7446: + %t526 = load ptr, ptr %a1 + %t527 = load %S.ast.Node, ptr %a2 + %t528 = load { ptr, i64, i64 }, ptr %a522 + %t529 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t528) + %t530 = call %S.gen.Val @finch.gen.convert(ptr %t526, %S.ast.Node %t527, %S.ast.Type %t529) + ret %S.gen.Val %t530 +endif7448: + %t531 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t531, ptr %a532 + store { ptr, i64, i64 } { ptr @.str.4884, i64 9, i64 0 }, ptr %a533 + %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) + %t535 = icmp ne i32 %t534, 0 + br label %logic.from7449 +logic.from7449: + br i1 %t535, label %logic.end7451, label %logic.rhs7450 +logic.rhs7450: + %t536 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t536, ptr %a537 + store { ptr, i64, i64 } { ptr @.str.4885, i64 11, i64 0 }, ptr %a538 + %t539 = call i32 @finch_str_eq(ptr %a537, ptr %a538) + %t540 = icmp ne i32 %t539, 0 + br label %logic.rend7452 +logic.rend7452: + br label %logic.end7451 +logic.end7451: + %t541 = phi i1 [ true, %logic.from7449 ], [ %t540, %logic.rend7452 ] + br i1 %t541, label %then7453, label %endif7455 +then7453: + %t542 = load ptr, ptr %a1 + %t543 = load %S.ast.Node, ptr %a2 + %t544 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t542, %S.ast.Node %t543, i64 0, i64 1, { ptr, i64, i64 } %t544) + %t545 = load ptr, ptr %a1 + %t546 = load ptr, ptr %a1 + %t547 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t548 = load { ptr, i64, i64 }, ptr %t547 + %t549 = extractvalue { ptr, i64, i64 } %t548, 1 + %t550 = icmp uge i64 0, %t549 + br i1 %t550, label %range7456, label %inrange7457 +range7456: + call void @finch_panic_index(ptr @.str.4886, i64 4382, i64 0, i64 %t549) + unreachable +inrange7457: + %t551 = extractvalue { ptr, i64, i64 } %t548, 0 + %t552 = getelementptr inbounds %S.ast.Node, ptr %t551, i64 0 + %t553 = load %S.ast.Node, ptr %t552 + %t554 = call %S.gen.Val @finch.gen.strArg(ptr %t546, %S.ast.Node %t553, { ptr, i64, i64 } { ptr @.str.4887, i64 13, i64 0 }) + %t555 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t545, %S.gen.Val %t554) + store { ptr, i64, i64 } %t555, ptr %a556 + %t557 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t557, ptr %a558 + store { ptr, i64, i64 } { ptr @.str.4888, i64 11, i64 0 }, ptr %a559 + %t560 = call i32 @finch_str_eq(ptr %a558, ptr %a559) + %t561 = icmp ne i32 %t560, 0 + br i1 %t561, label %then7458, label %endif7460 +then7458: + %t562 = load ptr, ptr %a1 + %t563 = load { ptr, i64, i64 }, ptr %a556 + store { ptr, i64, i64 } { ptr @.str.4889, i64 32, i64 0 }, ptr %a565 + store { ptr, i64, i64 } %t563, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a564 + store { ptr, i64, i64 } %t567, ptr %a569 + store { ptr, i64, i64 } { ptr @.str.4890, i64 1, i64 0 }, ptr %a570 + call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) + %t571 = load { ptr, i64, i64 }, ptr %a568 + %t572 = call { ptr, i64, i64 } @finch.gen.op(ptr %t562, { ptr, i64, i64 } %t571) + store { ptr, i64, i64 } %t572, ptr %a573 + %t574 = load ptr, ptr %a1 + %t575 = load { ptr, i64, i64 }, ptr %a573 + store { ptr, i64, i64 } { ptr @.str.4891, i64 12, i64 0 }, ptr %a577 + store { ptr, i64, i64 } %t575, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a576 + store { ptr, i64, i64 } %t579, ptr %a581 + store { ptr, i64, i64 } { ptr @.str.4892, i64 3, i64 0 }, ptr %a582 + call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a580 + %t584 = call { ptr, i64, i64 } @finch.gen.op(ptr %t574, { ptr, i64, i64 } %t583) + %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 + %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4893, i64 4, i64 0 }) + %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 + ret %S.gen.Val %t587 +endif7460: + %t588 = load ptr, ptr %a1 + %t589 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t588) + store { ptr, i64, i64 } %t589, ptr %a590 + %t591 = load ptr, ptr %a1 + %t592 = icmp eq ptr %t591, null + br i1 %t592, label %panic7461, label %ok7462 +panic7461: + call void @finch_panic(ptr @.str.4894, i64 4388, ptr @.str.4895) + unreachable +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 + %t604 = load ptr, ptr %a1 + %t605 = load { ptr, i64, i64 }, ptr %a590 + call void @finch.gen.store(ptr %t604, { ptr, i64, i64 } { ptr @.str.4897, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4898, i64 15, i64 0 }, { ptr, i64, i64 } %t605) + %t606 = load ptr, ptr %a1 + %t607 = load { ptr, i64, i64 }, ptr %a603 + call void @finch.gen.store(ptr %t606, { ptr, i64, i64 } { ptr @.str.4899, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4900, i64 15, i64 0 }, { ptr, i64, i64 } %t607) + %t608 = load ptr, ptr %a1 + %t609 = load { ptr, i64, i64 }, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.4901, i64 34, i64 0 }, ptr %a611 + store { ptr, i64, i64 } %t609, ptr %a612 + call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a610 + store { ptr, i64, i64 } %t613, ptr %a615 + store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a616 + call void @finch_str_concat(ptr %a614, ptr %a615, ptr %a616) + %t617 = load { ptr, i64, i64 }, ptr %a614 + %t618 = load { ptr, i64, i64 }, ptr %a556 + store { ptr, i64, i64 } %t617, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + %t622 = load { ptr, i64, i64 }, ptr %a619 + store { ptr, i64, i64 } %t622, ptr %a624 + store { ptr, i64, i64 } { ptr @.str.4903, i64 6, i64 0 }, ptr %a625 + call void @finch_str_concat(ptr %a623, ptr %a624, ptr %a625) + %t626 = load { ptr, i64, i64 }, ptr %a623 + %t627 = load { ptr, i64, i64 }, ptr %a603 + store { ptr, i64, i64 } %t626, ptr %a629 + store { ptr, i64, i64 } %t627, ptr %a630 + call void @finch_str_concat(ptr %a628, ptr %a629, ptr %a630) + %t631 = load { ptr, i64, i64 }, ptr %a628 + store { ptr, i64, i64 } %t631, ptr %a633 + store { ptr, i64, i64 } { ptr @.str.4904, i64 1, i64 0 }, ptr %a634 + call void @finch_str_concat(ptr %a632, ptr %a633, ptr %a634) + %t635 = load { ptr, i64, i64 }, ptr %a632 + %t636 = call { ptr, i64, i64 } @finch.gen.op(ptr %t608, { ptr, i64, i64 } %t635) + store { ptr, i64, i64 } %t636, ptr %a637 + %t638 = load ptr, ptr %a1 + %t639 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } { ptr @.str.4905, i64 12, i64 0 }, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + %t643 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t643, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.4906, i64 3, i64 0 }, ptr %a646 + call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646) + %t647 = load { ptr, i64, i64 }, ptr %a644 + %t648 = call { ptr, i64, i64 } @finch.gen.op(ptr %t638, { ptr, i64, i64 } %t647) + %t649 = load ptr, ptr %a1 + %t650 = icmp eq ptr %t649, null + br i1 %t650, label %panic7466, label %ok7467 +panic7466: + call void @finch_panic(ptr @.str.4907, i64 4393, ptr @.str.4908) + unreachable +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 + %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 + store { ptr, i64, i64 } %t688, ptr %a691 + store { ptr, i64, i64 } %t689, ptr %a692 + call void @finch_str_concat(ptr %a690, ptr %a691, ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a690 + store { ptr, i64, i64 } %t693, ptr %a695 + store { ptr, i64, i64 } { ptr @.str.4919, i64 6, i64 0 }, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a694 + %t698 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } %t697, ptr %a700 + store { ptr, i64, i64 } %t698, ptr %a701 + call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) + %t702 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t702, ptr %a704 + store { ptr, i64, i64 } { ptr @.str.4920, i64 6, i64 0 }, ptr %a705 + call void @finch_str_concat(ptr %a703, ptr %a704, ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a703 + %t707 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t708 = load i64, ptr %t707 + call void @finch_str_from_int(ptr %a709, i64 %t708) + %t710 = load { ptr, i64, i64 }, ptr %a709 + store { ptr, i64, i64 } %t706, ptr %a712 + store { ptr, i64, i64 } %t710, ptr %a713 + call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t714, ptr %a716 + store { ptr, i64, i64 } { ptr @.str.4921, i64 1, i64 0 }, ptr %a717 + call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717) + %t718 = load { ptr, i64, i64 }, ptr %a715 + call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t718) + %t719 = load ptr, ptr %a1 + %t720 = load { ptr, i64, i64 }, ptr %a590 + %t721 = call { ptr, i64, i64 } @finch.gen.load(ptr %t719, { ptr, i64, i64 } { ptr @.str.4922, i64 17, i64 0 }, { ptr, i64, i64 } %t720) + %t722 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t721, 0 + %t723 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }) + %t724 = insertvalue %S.gen.Val %t722, %S.ast.Type %t723, 1 + %t725 = insertvalue %S.gen.Val %t724, i1 true, 2 + ret %S.gen.Val %t725 +endif7455: + %t726 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t726, ptr %a727 + store { ptr, i64, i64 } { ptr @.str.4924, i64 10, i64 0 }, ptr %a728 + %t729 = call i32 @finch_str_eq(ptr %a727, ptr %a728) + %t730 = icmp ne i32 %t729, 0 + br i1 %t730, label %then7474, label %endif7476 +then7474: + %t731 = load ptr, ptr %a1 + %t732 = load %S.ast.Node, ptr %a2 + %t733 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t731, %S.ast.Node %t732, i64 0, i64 2, { ptr, i64, i64 } %t733) + %t734 = load ptr, ptr %a1 + %t735 = load ptr, ptr %a1 + %t736 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t737 = load { ptr, i64, i64 }, ptr %t736 + %t738 = extractvalue { ptr, i64, i64 } %t737, 1 + %t739 = icmp uge i64 0, %t738 + br i1 %t739, label %range7477, label %inrange7478 +range7477: + call void @finch_panic_index(ptr @.str.4925, i64 4403, i64 0, i64 %t738) + unreachable +inrange7478: + %t740 = extractvalue { ptr, i64, i64 } %t737, 0 + %t741 = getelementptr inbounds %S.ast.Node, ptr %t740, i64 0 + %t742 = load %S.ast.Node, ptr %t741 + %t743 = call %S.gen.Val @finch.gen.strArg(ptr %t735, %S.ast.Node %t742, { ptr, i64, i64 } { ptr @.str.4926, i64 13, i64 0 }) + %t744 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t734, %S.gen.Val %t743) + store { ptr, i64, i64 } %t744, ptr %a745 + %t746 = load ptr, ptr %a1 + %t747 = load ptr, ptr %a1 + %t748 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t749 = load { ptr, i64, i64 }, ptr %t748 + %t750 = extractvalue { ptr, i64, i64 } %t749, 1 + %t751 = icmp uge i64 1, %t750 + br i1 %t751, label %range7479, label %inrange7480 +range7479: + call void @finch_panic_index(ptr @.str.4927, i64 4404, i64 1, i64 %t750) + unreachable +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) + store { ptr, i64, i64 } %t761, ptr %a764 + store { ptr, i64, i64 } %t763, ptr %a765 + %t766 = call i32 @finch_str_eq(ptr %a764, ptr %a765) + %t767 = icmp ne i32 %t766, 0 + br i1 %t767, label %then7483, label %endif7485 +then7483: + %t768 = load ptr, ptr %a1 + %t769 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t768, { ptr, i64, i64 } { ptr @.str.4931, i64 17, i64 0 }) + store { ptr, i64, i64 } %t769, ptr %a770 + %t771 = load ptr, ptr %a1 + %t772 = load { ptr, i64, i64 }, ptr %a770 + call void @finch.gen.store(ptr %t771, { ptr, i64, i64 } { ptr @.str.4932, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4933, i64 15, i64 0 }, { ptr, i64, i64 } %t772) + %t773 = load ptr, ptr %a1 + %t774 = load { ptr, i64, i64 }, ptr %a745 + store { ptr, i64, i64 } { ptr @.str.4934, i64 35, i64 0 }, ptr %a776 + store { ptr, i64, i64 } %t774, ptr %a777 + call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) + %t778 = load { ptr, i64, i64 }, ptr %a775 + store { ptr, i64, i64 } %t778, ptr %a780 + store { ptr, i64, i64 } { ptr @.str.4935, i64 6, i64 0 }, ptr %a781 + call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) + %t782 = load { ptr, i64, i64 }, ptr %a779 + %t783 = load { ptr, i64, i64 }, ptr %a757 + store { ptr, i64, i64 } %t782, ptr %a785 + store { ptr, i64, i64 } %t783, ptr %a786 + call void @finch_str_concat(ptr %a784, ptr %a785, ptr %a786) + %t787 = load { ptr, i64, i64 }, ptr %a784 + store { ptr, i64, i64 } %t787, ptr %a789 + store { ptr, i64, i64 } { ptr @.str.4936, i64 6, i64 0 }, ptr %a790 + call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) + %t791 = load { ptr, i64, i64 }, ptr %a788 + %t792 = load { ptr, i64, i64 }, ptr %a770 + store { ptr, i64, i64 } %t791, ptr %a794 + store { ptr, i64, i64 } %t792, ptr %a795 + call void @finch_str_concat(ptr %a793, ptr %a794, ptr %a795) + %t796 = load { ptr, i64, i64 }, ptr %a793 + store { ptr, i64, i64 } %t796, ptr %a798 + store { ptr, i64, i64 } { ptr @.str.4937, i64 1, i64 0 }, ptr %a799 + call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) + %t800 = load { ptr, i64, i64 }, ptr %a797 + %t801 = call { ptr, i64, i64 } @finch.gen.op(ptr %t773, { ptr, i64, i64 } %t800) + store { ptr, i64, i64 } %t801, ptr %a802 + %t803 = load ptr, ptr %a1 + %t804 = load { ptr, i64, i64 }, ptr %a802 + store { ptr, i64, i64 } { ptr @.str.4938, i64 12, i64 0 }, ptr %a806 + store { ptr, i64, i64 } %t804, ptr %a807 + call void @finch_str_concat(ptr %a805, ptr %a806, ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a805 + store { ptr, i64, i64 } %t808, ptr %a810 + store { ptr, i64, i64 } { ptr @.str.4939, i64 3, i64 0 }, ptr %a811 + call void @finch_str_concat(ptr %a809, ptr %a810, ptr %a811) + %t812 = load { ptr, i64, i64 }, ptr %a809 + %t813 = call { ptr, i64, i64 } @finch.gen.op(ptr %t803, { ptr, i64, i64 } %t812) + %t814 = load ptr, ptr %a1 + %t815 = icmp eq ptr %t814, null + br i1 %t815, label %panic7486, label %ok7487 +panic7486: + call void @finch_panic(ptr @.str.4940, i64 4409, ptr @.str.4941) + unreachable +ok7487: + %t816 = getelementptr inbounds %S.gen.Gen, ptr %t814, i32 0, i32 40 + store { ptr, i64, i64 } %t813, ptr %t816 + %t817 = load ptr, ptr %a1 + %t818 = load { ptr, i64, i64 }, ptr %a770 + %t819 = call { ptr, i64, i64 } @finch.gen.load(ptr %t817, { ptr, i64, i64 } { ptr @.str.4942, i64 17, i64 0 }, { ptr, i64, i64 } %t818) + %t820 = load ptr, ptr %a1 + %t821 = icmp eq ptr %t820, null + br i1 %t821, label %panic7488, label %ok7489 +panic7488: + call void @finch_panic(ptr @.str.4943, i64 4410, ptr @.str.4944) + unreachable +ok7489: + %t822 = getelementptr inbounds %S.gen.Gen, ptr %t820, i32 0, i32 41 + store { ptr, i64, i64 } %t819, ptr %t822 + %t823 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4945, i64 4, i64 0 }) + %t824 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t823, 1 + ret %S.gen.Val %t824 +endif7485: + %t825 = load ptr, ptr %a1 + %t826 = load { ptr, i64, i64 }, ptr %a745 + store { ptr, i64, i64 } { ptr @.str.4946, i64 31, i64 0 }, ptr %a828 + store { ptr, i64, i64 } %t826, ptr %a829 + call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) + %t830 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t830, ptr %a832 + store { ptr, i64, i64 } { ptr @.str.4947, i64 6, i64 0 }, ptr %a833 + call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) + %t834 = load { ptr, i64, i64 }, ptr %a831 + %t835 = load { ptr, i64, i64 }, ptr %a757 + store { ptr, i64, i64 } %t834, ptr %a837 + store { ptr, i64, i64 } %t835, ptr %a838 + call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a836 + store { ptr, i64, i64 } %t839, ptr %a841 + store { ptr, i64, i64 } { ptr @.str.4948, i64 1, i64 0 }, ptr %a842 + call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842) + %t843 = load { ptr, i64, i64 }, ptr %a840 + %t844 = call { ptr, i64, i64 } @finch.gen.op(ptr %t825, { ptr, i64, i64 } %t843) + store { ptr, i64, i64 } %t844, ptr %a845 + %t846 = load ptr, ptr %a1 + %t847 = load { ptr, i64, i64 }, ptr %a845 + store { ptr, i64, i64 } { ptr @.str.4949, i64 12, i64 0 }, ptr %a849 + store { ptr, i64, i64 } %t847, ptr %a850 + call void @finch_str_concat(ptr %a848, ptr %a849, ptr %a850) + %t851 = load { ptr, i64, i64 }, ptr %a848 + store { ptr, i64, i64 } %t851, ptr %a853 + store { ptr, i64, i64 } { ptr @.str.4950, i64 3, i64 0 }, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a852 + %t856 = call { ptr, i64, i64 } @finch.gen.op(ptr %t846, { ptr, i64, i64 } %t855) + %t857 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t856, 0 + %t858 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4951, i64 4, i64 0 }) + %t859 = insertvalue %S.gen.Val %t857, %S.ast.Type %t858, 1 + ret %S.gen.Val %t859 +endif7476: + %t860 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t860, ptr %a861 + store { ptr, i64, i64 } { ptr @.str.4952, i64 11, i64 0 }, ptr %a862 + %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) + %t864 = icmp ne i32 %t863, 0 + br i1 %t864, label %then7490, label %endif7492 +then7490: + %t865 = load ptr, ptr %a1 + %t866 = load %S.ast.Node, ptr %a2 + %t867 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t865, %S.ast.Node %t866, i64 0, i64 1, { ptr, i64, i64 } %t867) + %t868 = load ptr, ptr %a1 + %t869 = 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 } %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 } %t893, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + %t897 = load { ptr, i64, i64 }, ptr %a894 + store { ptr, i64, i64 } %t897, ptr %a899 + store { ptr, i64, i64 } { ptr @.str.4957, i64 1, i64 0 }, ptr %a900 + call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) + %t901 = load { ptr, i64, i64 }, ptr %a898 + call void @finch.gen.emit(ptr %t881, { ptr, i64, i64 } %t901) + %t902 = load ptr, ptr %a1 + %t903 = icmp eq ptr %t902, null + br i1 %t903, label %panic7495, label %ok7496 +panic7495: + call void @finch_panic(ptr @.str.4958, i64 4421, ptr @.str.4959) + unreachable +ok7496: + %t904 = getelementptr inbounds %S.gen.Gen, ptr %t902, i32 0, i32 39 + %t905 = load { ptr, i64, i64 }, ptr %t904 + %t906 = load %S.ast.Node, ptr %a2 + %t907 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t906) + store { ptr, i64, i64 } %t905, ptr %a908 + store { ptr, i64, i64 } %t907, ptr %a909 + %t910 = call i32 @finch_str_eq(ptr %a908, ptr %a909) + %t911 = icmp ne i32 %t910, 0 + br i1 %t911, label %then7497, label %endif7499 +then7497: + %t912 = load ptr, ptr %a1 + %t913 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t912, { ptr, i64, i64 } { ptr @.str.4960, i64 17, i64 0 }) + store { ptr, i64, i64 } %t913, ptr %a914 + %t915 = load ptr, ptr %a1 + %t916 = load { ptr, i64, i64 }, ptr %a914 + 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) + 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 + 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) + 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: + %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) + 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) + unreachable +inrange7515: + %t1065 = extractvalue { ptr, i64, i64 } %t1062, 0 + %t1066 = getelementptr inbounds %S.ast.Node, ptr %t1065, i64 0 + %t1067 = load %S.ast.Node, ptr %t1066 + %t1068 = call %S.gen.Val @finch.gen.coerce(ptr %t1050, %S.gen.Val %t1059, %S.ast.Type %t1060, %S.ast.Node %t1067, { ptr, i64, i64 } { ptr @.str.4992, i64 13, i64 0 }) + store %S.gen.Val %t1068, ptr %a1069 + %t1070 = load ptr, ptr %a1 + %t1071 = getelementptr inbounds %S.gen.Val, ptr %a1069, i32 0, i32 0 + %t1072 = load { ptr, i64, i64 }, ptr %t1071 + store { ptr, i64, i64 } { ptr @.str.4993, i64 10, i64 0 }, ptr %a1074 + store { ptr, i64, i64 } %t1072, ptr %a1075 + call void @finch_str_concat(ptr %a1073, ptr %a1074, ptr %a1075) + %t1076 = load { ptr, i64, i64 }, ptr %a1073 + store { ptr, i64, i64 } %t1076, ptr %a1078 + store { ptr, i64, i64 } { ptr @.str.4994, i64 7, i64 0 }, ptr %a1079 + call void @finch_str_concat(ptr %a1077, ptr %a1078, ptr %a1079) + %t1080 = load { ptr, i64, i64 }, ptr %a1077 + %t1081 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1070, { ptr, i64, i64 } %t1080) + store { ptr, i64, i64 } %t1081, ptr %a1082 + %t1083 = load ptr, ptr %a1 + %t1084 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1083, { ptr, i64, i64 } { ptr @.str.4995, i64 26, i64 0 }) + store { ptr, i64, i64 } %t1084, ptr %a1085 + %t1086 = load ptr, ptr %a1 + %t1087 = load { ptr, i64, i64 }, ptr %a1082 + store { ptr, i64, i64 } { ptr @.str.4996, i64 20, i64 0 }, ptr %a1089 + store { ptr, i64, i64 } %t1087, ptr %a1090 + call void @finch_str_concat(ptr %a1088, ptr %a1089, ptr %a1090) + %t1091 = load { ptr, i64, i64 }, ptr %a1088 + store { ptr, i64, i64 } %t1091, ptr %a1093 + store { ptr, i64, i64 } { ptr @.str.4997, i64 1, i64 0 }, ptr %a1094 + call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) + %t1095 = load { ptr, i64, i64 }, ptr %a1092 + call void @finch.gen.emit(ptr %t1086, { ptr, i64, i64 } %t1095) + %t1096 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 4, i64 0 }) + %t1097 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1096, 1 + ret %S.gen.Val %t1097 +endif7511: + %t1098 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1098, ptr %a1099 + store { ptr, i64, i64 } { ptr @.str.4999, i64 5, i64 0 }, ptr %a1100 + %t1101 = call i32 @finch_str_eq(ptr %a1099, ptr %a1100) + %t1102 = icmp ne i32 %t1101, 0 + br i1 %t1102, label %then7516, label %endif7518 +then7516: + %t1103 = load ptr, ptr %a1 + %t1104 = call %S.gen.Val @finch.gen.strConst(ptr %t1103, { ptr, i64, i64 } { ptr @.str.5000, i64 0, i64 0 }) + store %S.gen.Val %t1104, ptr %a1105 + %t1106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1106, i32 0, i32 1 + %t1108 = load i64, ptr %t1107 + %t1109 = icmp sgt i64 %t1108, 0 + br i1 %t1109, label %then7519, label %endif7521 +then7519: + %t1110 = load ptr, ptr %a1 + %t1111 = load %S.ast.Node, ptr %a2 + %t1112 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1110, %S.ast.Node %t1111, i64 0, i64 1, { ptr, i64, i64 } %t1112) + %t1113 = load ptr, ptr %a1 + %t1114 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1115 = load { ptr, i64, i64 }, ptr %t1114 + %t1116 = extractvalue { ptr, i64, i64 } %t1115, 1 + %t1117 = icmp uge i64 0, %t1116 + br i1 %t1117, label %range7522, label %inrange7523 +range7522: + call void @finch_panic_index(ptr @.str.5001, i64 4451, i64 0, i64 %t1116) + unreachable +inrange7523: + %t1118 = extractvalue { ptr, i64, i64 } %t1115, 0 + %t1119 = getelementptr inbounds %S.ast.Node, ptr %t1118, i64 0 + %t1120 = load %S.ast.Node, ptr %t1119 + %t1121 = call %S.gen.Val @finch.gen.strArg(ptr %t1113, %S.ast.Node %t1120, { ptr, i64, i64 } { ptr @.str.5002, i64 12, i64 0 }) + store %S.gen.Val %t1121, ptr %a1105 + br label %endif7521 +endif7521: + %t1122 = load ptr, ptr %a1 + %t1123 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1122) + store { ptr, i64, i64 } %t1123, ptr %a1124 + %t1125 = load ptr, ptr %a1 + %t1126 = load { ptr, i64, i64 }, ptr %a1124 + store { ptr, i64, i64 } { ptr @.str.5003, i64 27, i64 0 }, ptr %a1128 + store { ptr, i64, i64 } %t1126, ptr %a1129 + call void @finch_str_concat(ptr %a1127, ptr %a1128, ptr %a1129) + %t1130 = load { ptr, i64, i64 }, ptr %a1127 + store { ptr, i64, i64 } %t1130, ptr %a1132 + store { ptr, i64, i64 } { ptr @.str.5004, i64 6, i64 0 }, ptr %a1133 + call void @finch_str_concat(ptr %a1131, ptr %a1132, ptr %a1133) + %t1134 = load { ptr, i64, i64 }, ptr %a1131 + %t1135 = load ptr, ptr %a1 + %t1136 = load %S.gen.Val, ptr %a1105 + %t1137 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1135, %S.gen.Val %t1136) + store { ptr, i64, i64 } %t1134, ptr %a1139 + store { ptr, i64, i64 } %t1137, ptr %a1140 + call void @finch_str_concat(ptr %a1138, ptr %a1139, ptr %a1140) + %t1141 = load { ptr, i64, i64 }, ptr %a1138 + store { ptr, i64, i64 } %t1141, ptr %a1143 + store { ptr, i64, i64 } { ptr @.str.5005, i64 1, i64 0 }, ptr %a1144 + call void @finch_str_concat(ptr %a1142, ptr %a1143, ptr %a1144) + %t1145 = load { ptr, i64, i64 }, ptr %a1142 + call void @finch.gen.emit(ptr %t1125, { ptr, i64, i64 } %t1145) + %t1146 = load ptr, ptr %a1 + %t1147 = load { ptr, i64, i64 }, ptr %a1124 + %t1148 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1146, { ptr, i64, i64 } { ptr @.str.5006, i64 17, i64 0 }, { ptr, i64, i64 } %t1147) + %t1149 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1148, 0 + %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5007, i64 3, i64 0 }) + %t1151 = insertvalue %S.gen.Val %t1149, %S.ast.Type %t1150, 1 + %t1152 = insertvalue %S.gen.Val %t1151, i1 true, 2 + ret %S.gen.Val %t1152 +endif7518: + %t1153 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1153, ptr %a1154 + store { ptr, i64, i64 } { ptr @.str.5008, i64 3, i64 0 }, ptr %a1155 + %t1156 = call i32 @finch_str_eq(ptr %a1154, ptr %a1155) + %t1157 = icmp ne i32 %t1156, 0 + br i1 %t1157, label %then7524, label %endif7526 +then7524: + %t1158 = load ptr, ptr %a1 + %t1159 = load %S.ast.Node, ptr %a2 + %t1160 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1158, %S.ast.Node %t1159, i64 0, i64 1, { ptr, i64, i64 } %t1160) + %t1161 = load ptr, ptr %a1 + %t1162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1163 = load { ptr, i64, i64 }, ptr %t1162 + %t1164 = extractvalue { ptr, i64, i64 } %t1163, 1 + %t1165 = icmp uge i64 0, %t1164 + br i1 %t1165, label %range7527, label %inrange7528 +range7527: + call void @finch_panic_index(ptr @.str.5009, i64 4459, i64 0, i64 %t1164) + unreachable +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) + 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) + 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 + 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) + 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) + 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) + 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) + 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) + 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: + %t1504 = load ptr, ptr %a1 + %t1505 = load %S.ast.Node, ptr %a2 + %t1506 = load ptr, ptr %a1 + %t1507 = icmp eq ptr %t1506, null + br i1 %t1507, label %panic7604, label %ok7605 +panic7604: + call void @finch_panic(ptr @.str.5059, i64 4510, ptr @.str.5060) + unreachable +ok7605: + %t1508 = getelementptr inbounds %S.gen.Gen, ptr %t1506, i32 0, i32 24 + %t1509 = getelementptr inbounds %S.cimport.CImports, ptr %t1508, i32 0, i32 0 + %t1510 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1510, ptr %a1511 + %t1512 = call i64 @finch_map_find(ptr %t1509, ptr %a1511, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t1513 = icmp slt i64 %t1512, 0 + br i1 %t1513, label %map.missing7606, label %map.found7607 +map.missing7606: + store { ptr, i64, i64 } zeroinitializer, ptr %a1514 + store { ptr, i64, i64 } %t1510, ptr %a1515 + call void @finch_buf_str(ptr %a1514, ptr %a1515, i32 1) + call void @finch_map_missing(ptr @.str.5061, i64 4510, ptr %a1514) + unreachable +map.found7607: + %t1516 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1509, i32 0, i32 0 + %t1517 = load ptr, ptr %t1516 + %t1518 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1517, i64 %t1512 + %t1519 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1518, i32 0, i32 2 + %t1520 = load %S.cimport.CFunc, ptr %t1519 + %t1521 = call %S.gen.Val @finch.gen.callC(ptr %t1504, %S.ast.Node %t1505, %S.cimport.CFunc %t1520) + ret %S.gen.Val %t1521 +endif7603: + %t1522 = load ptr, ptr %a1 + %t1523 = load { ptr, i64, i64 }, ptr %a8 + %t1524 = call i64 @finch.gen.findStruct(ptr %t1522, { ptr, i64, i64 } { ptr @.str.5062, i64 1, i64 0 }, { ptr, i64, i64 } %t1523) + store i64 %t1524, ptr %a1382 + %t1525 = load i64, ptr %a1382 + %t1526 = icmp sge i64 %t1525, 0 + br i1 %t1526, label %then7608, label %endif7610 +then7608: + %t1527 = load ptr, ptr %a1 + %t1528 = load i64, ptr %a1382 + %t1529 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1530 = load { ptr, i64, i64 }, ptr %t1529 + %t1531 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1532 = load { ptr, i64, i64 }, ptr %t1531 + %t1533 = load %S.ast.Node, ptr %a2 + %t1534 = call %S.gen.Val @finch.gen.construct(ptr %t1527, i64 %t1528, { ptr, i64, i64 } %t1530, { ptr, i64, i64 } %t1532, %S.ast.Node %t1533) + ret %S.gen.Val %t1534 +endif7610: + %t1535 = load ptr, ptr %a1 + %t1536 = load { ptr, i64, i64 }, ptr %a8 + %t1537 = call i64 @finch.gen.lookup(ptr %t1535, { ptr, i64, i64 } %t1536) + %t1538 = icmp sge i64 %t1537, 0 + br i1 %t1538, label %then7611, label %endif7613 +then7611: + %t1539 = load ptr, ptr %a1 + %t1540 = load %S.ast.Node, ptr %a2 + %t1541 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5063, i64 1, i64 0 }, ptr %a1543 + store { ptr, i64, i64 } %t1541, ptr %a1544 + call void @finch_str_concat(ptr %a1542, ptr %a1543, ptr %a1544) + %t1545 = load { ptr, i64, i64 }, ptr %a1542 + store { ptr, i64, i64 } %t1545, ptr %a1547 + store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a1548 + call void @finch_str_concat(ptr %a1546, ptr %a1547, ptr %a1548) + %t1549 = load { ptr, i64, i64 }, ptr %a1546 + call void @finch.gen.fail(ptr %t1539, %S.ast.Node %t1540, { ptr, i64, i64 } %t1549) + br label %endif7613 +endif7613: + %t1550 = load ptr, ptr %a1 + %t1551 = load %S.ast.Node, ptr %a2 + %t1552 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5065, i64 28, i64 0 }, ptr %a1554 + store { ptr, i64, i64 } %t1552, ptr %a1555 + call void @finch_str_concat(ptr %a1553, ptr %a1554, ptr %a1555) + %t1556 = load { ptr, i64, i64 }, ptr %a1553 + store { ptr, i64, i64 } %t1556, ptr %a1558 + store { ptr, i64, i64 } { ptr @.str.5066, i64 1, i64 0 }, ptr %a1559 + call void @finch_str_concat(ptr %a1557, ptr %a1558, ptr %a1559) + %t1560 = load { ptr, i64, i64 }, ptr %a1557 + %t1561 = load { ptr, i64, i64 }, ptr %a8 + %t1562 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1561) + store { ptr, i64, i64 } %t1560, ptr %a1564 + store { ptr, i64, i64 } %t1562, ptr %a1565 + call void @finch_str_concat(ptr %a1563, ptr %a1564, ptr %a1565) + %t1566 = load { ptr, i64, i64 }, ptr %a1563 + call void @finch.gen.fail(ptr %t1550, %S.ast.Node %t1551, { ptr, i64, i64 } %t1566) + ret %S.gen.Val zeroinitializer +} + +define internal %S.gen.Val @finch.gen.callFn(ptr %p0, i64 %p1, %S.ast.Node %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, { ptr, i64, i64 } %p6) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca %S.ast.Node, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca %S.gen.FnSig, align 16 + %a19 = alloca %S.gen.FnSig, align 16 + %a21 = alloca %S.gen.FnSig, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = 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 + %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 + store ptr %p0, ptr %a1 + store i64 %p1, ptr %a2 + store %S.ast.Node %p2, ptr %a3 + store i64 %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + store { ptr, i64, i64 } %p5, ptr %a6 + 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) + unreachable +ok7615: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14 + %t11 = load i64, ptr %a2 + %t12 = load { ptr, i64, i64 }, ptr %t10 + %t13 = extractvalue { ptr, i64, i64 } %t12, 1 + %t14 = icmp uge i64 %t11, %t13 + br i1 %t14, label %range7616, label %inrange7617 +range7616: + call void @finch_panic_index(ptr @.str.5069, i64 4524, i64 %t11, i64 %t13) + unreachable +inrange7617: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.gen.FnSig, ptr %t15, i64 %t11 + %t17 = load %S.gen.FnSig, ptr %t16 + store %S.gen.FnSig %t17, ptr %a18 + call void @finch.copy.S_gen_FnSig(ptr %a19, ptr %a18) + %t20 = load %S.gen.FnSig, ptr %a19 + store %S.gen.FnSig %t20, ptr %a21 + %t22 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 0 + %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: + %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 + %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: + %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: + %t35 = load ptr, ptr %a1 + %t36 = load %S.ast.Node, ptr %a3 + %t37 = load %S.gen.FnSig, ptr %a21 + call void @finch.gen.noteCall(ptr %t35, %S.ast.Node %t36, %S.gen.FnSig %t37) + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Node, ptr %a3 + %t40 = load i64, ptr %a4 + %t41 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 + %t43 = load i64, ptr %t42 + %t44 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.checkArgs(ptr %t38, %S.ast.Node %t39, i64 %t40, i64 %t43, { ptr, i64, i64 } %t44) + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + %t46 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 2 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load i64, ptr %t47 + %t49 = icmp sgt i64 %t48, 0 + br i1 %t49, label %then7625, label %endif7627 +then7625: + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 + %t51 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5072, i64 4, i64 0 }, ptr %a53 + store { ptr, i64, i64 } %t51, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + %t56 = load i64, ptr %t50 + %t57 = add i64 %t56, 1 + call void @finch_arr_reserve(ptr %a45, i64 %t57, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t58 = load ptr, ptr %a45 + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t56 + store { ptr, i64, i64 } %t55, ptr %t59 + store i64 %t57, ptr %t50 + br label %endif7627 +endif7627: + %t60 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 + %t62 = load i64, ptr %t61 + store i64 0, ptr %a63 + br label %for.cond7628 +for.cond7628: + %t64 = load i64, ptr %a63 + %t65 = icmp slt i64 %t64, %t62 + br i1 %t65, label %for.body7629, label %for.end7631 +for.body7629: + %t66 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t67 = load i64, ptr %a4 + %t68 = load i64, ptr %a63 + %t69 = add i64 %t67, %t68 + %t70 = load { ptr, i64, i64 }, ptr %t66 + %t71 = extractvalue { ptr, i64, i64 } %t70, 1 + %t72 = icmp uge i64 %t69, %t71 + br i1 %t72, label %range7632, label %inrange7633 +range7632: + call void @finch_panic_index(ptr @.str.5073, i64 4535, i64 %t69, i64 %t71) + unreachable +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) + 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) + 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) + 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) + 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) + 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 +} + +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) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.gen.FnSig, align 16 + %a3 = alloca %S.ast.Node, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a96 = 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 + %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 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a162 = 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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.gen.FnSig %p1, ptr %a2 + store %S.ast.Node %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + 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: + %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) + unreachable +ok7663: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 39 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = load %S.ast.Node, ptr %a3 + %t13 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t12) + store { ptr, i64, i64 } %t11, ptr %a14 + 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 + 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 + 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 + 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 } %t73, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.5091, i64 1, i64 0 }, ptr %a76 + call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) + %t77 = load { ptr, i64, i64 }, ptr %a74 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.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 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.5093, i64 1, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a86 + store { ptr, i64, i64 } %t89, ptr %a90 + %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 + %t92 = load i1, ptr %t91 + br i1 %t92, label %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 + 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 + 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 + 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) + 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 + %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 +} + +define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca %S.ast.Node, align 16 + %a16 = alloca %S.gen.StructDef, align 16 + %a17 = alloca %S.gen.StructDef, align 16 + %a19 = alloca %S.gen.StructDef, align 16 + %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 + %a129 = 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 + %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 + %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 + %a153 = 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 + %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 + %a182 = alloca i64, align 16 + %a185 = alloca i64, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, 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 + %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 + %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 + %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 + %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 + %a500 = 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 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store i64 %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + 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) + unreachable +ok7682: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 + %t9 = load i64, ptr %a2 + %t10 = load { ptr, i64, i64 }, ptr %t8 + %t11 = extractvalue { ptr, i64, i64 } %t10, 1 + %t12 = icmp uge i64 %t9, %t11 + br i1 %t12, label %range7683, label %inrange7684 +range7683: + call void @finch_panic_index(ptr @.str.5113, i64 4570, i64 %t9, i64 %t11) + unreachable +inrange7684: + %t13 = extractvalue { ptr, i64, i64 } %t10, 0 + %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 + %t15 = load %S.gen.StructDef, ptr %t14 + store %S.gen.StructDef %t15, ptr %a16 + call void @finch.copy.S_gen_StructDef(ptr %a17, ptr %a16) + %t18 = load %S.gen.StructDef, ptr %a17 + store %S.gen.StructDef %t18, ptr %a19 + store %S.ast.Node zeroinitializer, ptr %a20 + %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: + %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) + unreachable +ok7689: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0 + %t27 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 13 + %t28 = load i64, ptr %t27 + %t29 = load { ptr, i64, i64 }, ptr %t26 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range7690, label %inrange7691 +range7690: + call void @finch_panic_index(ptr @.str.5116, i64 4573, i64 %t28, i64 %t30) + unreachable +inrange7691: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds %S.ast.Program, ptr %t32, i64 %t28 + %t34 = getelementptr inbounds %S.ast.Program, ptr %t33, i32 0, i32 6 + %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 14 + %t36 = load i64, ptr %t35 + %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) + unreachable +inrange7693: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 + %t42 = load %S.ast.Node, ptr %t41 + 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 + 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) + 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) + 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) + 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) + 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) + 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 + %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) + 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 + %t219 = load { ptr, i64, i64 }, ptr %t218 + store { ptr, i64, i64 } %t212, 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.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) + 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) + 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) + 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) + 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 + %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) + unreachable +inrange7753: + %t280 = extractvalue { ptr, i64, i64 } %t277, 0 + %t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276 + %t282 = load %S.ast.Type, ptr %t281 + 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) + 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 + %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) + unreachable +inrange7760: + %t302 = extractvalue { ptr, i64, i64 } %t299, 0 + %t303 = getelementptr inbounds i64, ptr %t302, i64 %t298 + %t304 = load i64, ptr %t303 + %t305 = load { ptr, i64, i64 }, ptr %a3 + %t306 = extractvalue { ptr, i64, i64 } %t305, 1 + %t307 = icmp uge i64 %t304, %t306 + br i1 %t307, label %range7761, label %inrange7762 +range7761: + call void @finch_panic_index(ptr @.str.5143, i64 4607, i64 %t304, i64 %t306) + 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 + %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) + unreachable +inrange7766: + %t324 = extractvalue { ptr, i64, i64 } %t321, 0 + %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 + %t326 = load %S.ast.Node, ptr %t325 + %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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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 +} + +define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca %S.docs.Doc, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic7814, label %ok7815 +panic7814: + call void @finch_panic(ptr @.str.5187, i64 4637, ptr @.str.5188) + unreachable +ok7815: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + %t8 = xor i1 %t7, true + br i1 %t8, label %then7816, label %endif7818 +then7816: + ret void +endif7818: + %t9 = load { ptr, i64, i64 }, ptr %a3 + %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t9, { ptr, i64, i64 } %t11) + store %S.docs.Doc %t12, ptr %a13 + %t14 = getelementptr inbounds %S.docs.Doc, ptr %a13, i32 0, i32 0 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = icmp sgt i64 %t16, 0 + br i1 %t17, label %then7819, label %endif7821 +then7819: + %t18 = load ptr, ptr %a1 + %t19 = load %S.ast.Node, ptr %a2 + %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t21 = load i64, ptr %t20 + %t22 = add i64 %t21, 1 + %t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = load %S.docs.Doc, ptr %a13 + %t27 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t26) + call void @finch.gen.noteRef(ptr %t18, %S.ast.Node %t19, i64 %t22, i64 %t25, { ptr, i64, i64 } %t27, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7821 +endif7821: + ret void +} + +define internal %S.gen.Val @finch.gen.method(ptr %p0, %S.ast.Node %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a10 = alloca %S.ast.Node, align 16 + %a11 = alloca %S.ast.Node, align 16 + %a13 = alloca %S.ast.Node, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = 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 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a724 = alloca { ptr, i64, i64 }, align 16 + %a725 = alloca { ptr, i64, i64 }, align 16 + %a726 = alloca { ptr, i64, i64 }, align 16 + %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 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca i64, align 16 + %a758 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 + %a762 = alloca { ptr, i64, i64 }, align 16 + %a763 = alloca { ptr, i64, i64 }, align 16 + %a764 = alloca { ptr, i64, i64 }, align 16 + %a771 = alloca { ptr, i64, i64 }, align 16 + %a772 = alloca { ptr, i64, i64 }, align 16 + %a773 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca { ptr, i64, i64 }, align 16 + %a778 = alloca { ptr, i64, i64 }, align 16 + %a779 = alloca { ptr, i64, i64 }, align 16 + %a789 = alloca { ptr, i64, i64 }, align 16 + %a790 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t4 = load { ptr, i64, i64 }, ptr %t3 + %t5 = extractvalue { ptr, i64, i64 } %t4, 1 + %t6 = icmp uge i64 0, %t5 + br i1 %t6, label %range7822, label %inrange7823 +range7822: + call void @finch_panic_index(ptr @.str.5190, i64 4647, i64 0, i64 %t5) + unreachable +inrange7823: + %t7 = extractvalue { ptr, i64, i64 } %t4, 0 + %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 + %t9 = load %S.ast.Node, ptr %t8 + store %S.ast.Node %t9, ptr %a10 + call void @finch.copy.S_ast_Node(ptr %a11, ptr %a10) + %t12 = load %S.ast.Node, ptr %a11 + store %S.ast.Node %t12, ptr %a13 + %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 + %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: + %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: + %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 + call void @finch_str_copy(ptr %a29, ptr %a28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t30, ptr %a31 + %t32 = load ptr, ptr %a1 + %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: + %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 } %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 + 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 } %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 + 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: + %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) + 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) + %t361 = load ptr, ptr %a1 + %t362 = load %S.ast.Node, ptr %a2 + %t363 = load { ptr, i64, i64 }, ptr %a319 + %t364 = load %S.ast.Type, ptr %a217 + %t365 = call %S.gen.Val @finch.gen.mapMethod(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t363, %S.ast.Type %t364) + ret %S.gen.Val %t365 +endif7882: + %t366 = load %S.ast.Type, ptr %a217 + store %S.ast.Type %t366, ptr %a367 + call void @finch.copy.S_ast_Type(ptr %a368, ptr %a367) + %t369 = load %S.ast.Type, ptr %a368 + store %S.ast.Type %t369, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.5220, i64 0, i64 0 }, ptr %a371 + %t372 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t373 = load { ptr, i64, i64 }, ptr %t372 + store { ptr, i64, i64 } %t373, ptr %a374 + store { ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }, ptr %a375 + %t376 = call i32 @finch_str_eq(ptr %a374, ptr %a375) + %t377 = icmp ne i32 %t376, 0 + br label %logic.from7894 +logic.from7894: + br i1 %t377, label %logic.rhs7895, label %logic.end7896 +logic.rhs7895: + %t378 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 + %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t380 = load i64, ptr %t379 + %t381 = icmp sgt i64 %t380, 0 + br label %logic.rend7897 +logic.rend7897: + br label %logic.end7896 +logic.end7896: + %t382 = phi i1 [ false, %logic.from7894 ], [ %t381, %logic.rend7897 ] + br label %logic.from7898 +logic.from7898: + br i1 %t382, label %logic.rhs7899, label %logic.end7900 +logic.rhs7899: + %t383 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 + %t384 = load { ptr, i64, i64 }, ptr %t383 + %t385 = extractvalue { ptr, i64, i64 } %t384, 1 + %t386 = icmp uge i64 0, %t385 + br i1 %t386, label %range7901, label %inrange7902 +range7901: + call void @finch_panic_index(ptr @.str.5222, i64 4717, i64 0, i64 %t385) + unreachable +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 + %t491 = load { ptr, i64, i64 }, ptr %t490 + %t492 = call i64 @finch.gen.findMethod(ptr %t485, { ptr, i64, i64 } %t487, { ptr, i64, i64 } %t489, { ptr, i64, i64 } %t491) + store i64 %t492, ptr %a493 + %t494 = load i64, ptr %a493 + %t495 = icmp slt i64 %t494, 0 + br label %logic.from7929 +logic.from7929: + br i1 %t495, label %logic.rhs7930, label %logic.end7931 +logic.rhs7930: + %t496 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t497 = load { ptr, i64, i64 }, ptr %t496 + store { ptr, i64, i64 } %t497, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5234, i64 6, i64 0 }, ptr %a499 + %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) + %t501 = icmp ne i32 %t500, 0 + br label %logic.rend7932 +logic.rend7932: + br label %logic.end7931 +logic.end7931: + %t502 = phi i1 [ false, %logic.from7929 ], [ %t501, %logic.rend7932 ] + br i1 %t502, label %then7933, label %endif7935 +then7933: + %t503 = load ptr, ptr %a1 + %t504 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t505 = load { ptr, i64, i64 }, ptr %t504 + %t506 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t507 = load { ptr, i64, i64 }, ptr %t506 + %t508 = call i64 @finch.gen.findStruct(ptr %t503, { ptr, i64, i64 } %t505, { ptr, i64, i64 } %t507) + store i64 %t508, ptr %a509 + %t510 = load ptr, ptr %a1 + %t511 = icmp eq ptr %t510, null + br i1 %t511, label %panic7936, label %ok7937 +panic7936: + call void @finch_panic(ptr @.str.5235, i64 4736, ptr @.str.5236) + unreachable +ok7937: + %t512 = getelementptr inbounds %S.gen.Gen, ptr %t510, i32 0, i32 15 + %t513 = load i64, ptr %a509 + %t514 = load { ptr, i64, i64 }, ptr %t512 + %t515 = extractvalue { ptr, i64, i64 } %t514, 1 + %t516 = icmp uge i64 %t513, %t515 + br i1 %t516, label %range7938, label %inrange7939 +range7938: + call void @finch_panic_index(ptr @.str.5237, i64 4736, i64 %t513, i64 %t515) + unreachable +inrange7939: + %t517 = extractvalue { ptr, i64, i64 } %t514, 0 + %t518 = getelementptr inbounds %S.gen.StructDef, ptr %t517, i64 %t513 + %t519 = getelementptr inbounds %S.gen.StructDef, ptr %t518, i32 0, i32 5 + %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i32 0, i32 1 + %t521 = load i64, ptr %t520 + %t522 = icmp sgt i64 %t521, 0 + br i1 %t522, label %then7940, label %endif7942 +then7940: + %t523 = load ptr, ptr %a1 + %t524 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t525 = load { ptr, i64, i64 }, ptr %t524 + %t526 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t527 = load { ptr, i64, i64 }, ptr %t526 + %t528 = load ptr, ptr %a1 + %t529 = icmp eq ptr %t528, null + br i1 %t529, label %panic7943, label %ok7944 +panic7943: + call void @finch_panic(ptr @.str.5238, i64 4737, ptr @.str.5239) + unreachable +ok7944: + %t530 = getelementptr inbounds %S.gen.Gen, ptr %t528, i32 0, i32 15 + %t531 = load i64, ptr %a509 + %t532 = load { ptr, i64, i64 }, ptr %t530 + %t533 = extractvalue { ptr, i64, i64 } %t532, 1 + %t534 = icmp uge i64 %t531, %t533 + br i1 %t534, label %range7945, label %inrange7946 +range7945: + call void @finch_panic_index(ptr @.str.5240, i64 4737, i64 %t531, i64 %t533) + unreachable +inrange7946: + %t535 = extractvalue { ptr, i64, i64 } %t532, 0 + %t536 = getelementptr inbounds %S.gen.StructDef, ptr %t535, i64 %t531 + %t537 = getelementptr inbounds %S.gen.StructDef, ptr %t536, i32 0, i32 5 + %t538 = load { ptr, i64, i64 }, ptr %t537 + %t539 = call i64 @finch.gen.findTemplate(ptr %t523, { ptr, i64, i64 } %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t538, i1 false) + store i64 %t539, ptr %a540 + %t541 = load i64, ptr %a540 + %t542 = icmp sge i64 %t541, 0 + br i1 %t542, label %then7947, label %endif7949 +then7947: + %t543 = load ptr, ptr %a1 + %t544 = load i64, ptr %a540 + %t545 = load ptr, ptr %a1 + %t546 = icmp eq ptr %t545, null + br i1 %t546, label %panic7950, label %ok7951 +panic7950: + call void @finch_panic(ptr @.str.5241, i64 4739, ptr @.str.5242) + unreachable +ok7951: + %t547 = getelementptr inbounds %S.gen.Gen, ptr %t545, i32 0, i32 15 + %t548 = load i64, ptr %a509 + %t549 = load { ptr, i64, i64 }, ptr %t547 + %t550 = extractvalue { ptr, i64, i64 } %t549, 1 + %t551 = icmp uge i64 %t548, %t550 + br i1 %t551, label %range7952, label %inrange7953 +range7952: + call void @finch_panic_index(ptr @.str.5243, i64 4739, i64 %t548, i64 %t550) + unreachable +inrange7953: + %t552 = extractvalue { ptr, i64, i64 } %t549, 0 + %t553 = getelementptr inbounds %S.gen.StructDef, ptr %t552, i64 %t548 + %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i32 0, i32 7 + %t555 = load { ptr, i64, i64 }, ptr %t554 + %t556 = load %S.ast.Type, ptr %a370 + %t557 = load %S.ast.Node, ptr %a2 + %t558 = call i64 @finch.gen.instFn(ptr %t543, i64 %t544, { ptr, i64, i64 } %t555, %S.ast.Type %t556, %S.ast.Node %t557) + store i64 %t558, ptr %a493 + br label %endif7949 +endif7949: + br label %endif7942 +endif7942: + br label %endif7935 +endif7935: + %t559 = load i64, ptr %a493 + %t560 = icmp slt i64 %t559, 0 + br i1 %t560, label %then7954, label %endif7956 +then7954: + store { ptr, i64, i64 } zeroinitializer, ptr %a561 + %t562 = load ptr, ptr %a1 + %t563 = icmp eq ptr %t562, null + br i1 %t563, label %panic7957, label %ok7958 +panic7957: + call void @finch_panic(ptr @.str.5244, i64 4745, ptr @.str.5245) + unreachable +ok7958: + %t564 = getelementptr inbounds %S.gen.Gen, ptr %t562, i32 0, i32 14 + store i64 0, ptr %a565 + br label %each.cond7959 +each.cond7959: + %t566 = getelementptr inbounds { ptr, i64, i64 }, ptr %t564, i32 0, i32 1 + %t567 = load i64, ptr %t566 + %t568 = load i64, ptr %a565 + %t569 = icmp slt i64 %t568, %t567 + br i1 %t569, label %each.body7960, label %each.end7962 +each.body7960: + %t570 = load ptr, ptr %t564 + %t571 = getelementptr inbounds %S.gen.FnSig, ptr %t570, i64 %t568 + %t572 = load %S.gen.FnSig, ptr %t571 + store %S.gen.FnSig %t572, ptr %a573 + %t574 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 2 + %t575 = load { ptr, i64, i64 }, ptr %t574 + %t576 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store { ptr, i64, i64 } %t575, ptr %a578 + store { ptr, i64, i64 } %t577, ptr %a579 + %t580 = call i32 @finch_str_eq(ptr %a578, ptr %a579) + %t581 = icmp ne i32 %t580, 0 + br label %logic.from7963 +logic.from7963: + br i1 %t581, label %logic.rhs7964, label %logic.end7965 +logic.rhs7964: + %t582 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 3 + %t583 = load { ptr, i64, i64 }, ptr %t582 + %t584 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t585 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t583, ptr %a586 + store { ptr, i64, i64 } %t585, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br label %logic.rend7966 +logic.rend7966: + br label %logic.end7965 +logic.end7965: + %t590 = phi i1 [ false, %logic.from7963 ], [ %t589, %logic.rend7966 ] + br i1 %t590, label %then7967, label %endif7969 +then7967: + %t591 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + %t592 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %t592 + store { ptr, i64, i64 } %t593, ptr %a594 + call void @finch_str_copy(ptr %a595, ptr %a594) + %t596 = load { ptr, i64, i64 }, ptr %a595 + %t597 = load i64, ptr %t591 + %t598 = add i64 %t597, 1 + call void @finch_arr_reserve(ptr %a561, i64 %t598, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t599 = load ptr, ptr %a561 + %t600 = getelementptr inbounds { ptr, i64, i64 }, ptr %t599, i64 %t597 + store { ptr, i64, i64 } %t596, ptr %t600 + store i64 %t598, ptr %t591 + br label %endif7969 +endif7969: + br label %each.step7961 +each.step7961: + %t601 = load i64, ptr %a565 + %t602 = add i64 %t601, 1 + store i64 %t602, ptr %a565 + br label %each.cond7959 +each.end7962: + %t603 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + %t604 = load i64, ptr %t603 + %t605 = icmp eq i64 %t604, 0 + br i1 %t605, label %then7970, label %endif7972 +then7970: + %t606 = load ptr, ptr %a1 + %t607 = load %S.ast.Node, ptr %a2 + %t608 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t609 = load { ptr, i64, i64 }, ptr %t608 + store { ptr, i64, i64 } { ptr @.str.5246, i64 4, i64 0 }, ptr %a611 + store { ptr, i64, i64 } %t609, ptr %a612 + call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a610 + store { ptr, i64, i64 } %t613, ptr %a615 + store { ptr, i64, i64 } { ptr @.str.5247, i64 1, i64 0 }, ptr %a616 + call void @finch_str_concat(ptr %a614, ptr %a615, ptr %a616) + %t617 = load { ptr, i64, i64 }, ptr %a614 + %t618 = load %S.ast.Type, ptr %a370 + %t619 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t618) + store { ptr, i64, i64 } %t617, ptr %a621 + store { ptr, i64, i64 } %t619, ptr %a622 + call void @finch_str_concat(ptr %a620, ptr %a621, ptr %a622) + %t623 = load { ptr, i64, i64 }, ptr %a620 + store { ptr, i64, i64 } %t623, ptr %a625 + store { ptr, i64, i64 } { ptr @.str.5248, i64 34, i64 0 }, ptr %a626 + call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) + %t627 = load { ptr, i64, i64 }, ptr %a624 + %t628 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t629 = load { ptr, i64, i64 }, ptr %t628 + store { ptr, i64, i64 } %t627, ptr %a631 + store { ptr, i64, i64 } %t629, ptr %a632 + call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) + %t633 = load { ptr, i64, i64 }, ptr %a630 + store { ptr, i64, i64 } %t633, ptr %a635 + store { ptr, i64, i64 } { ptr @.str.5249, i64 1, i64 0 }, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + %t637 = load { ptr, i64, i64 }, ptr %a634 + %t638 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t639 = load { ptr, i64, i64 }, ptr %t638 + store { ptr, i64, i64 } %t637, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + %t643 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t643, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.5250, i64 13, i64 0 }, ptr %a646 + call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646) + %t647 = load { ptr, i64, i64 }, ptr %a644 + call void @finch.gen.fail(ptr %t606, %S.ast.Node %t607, { ptr, i64, i64 } %t647) + br label %endif7972 +endif7972: + %t648 = load ptr, ptr %a1 + %t649 = load %S.ast.Node, ptr %a2 + %t650 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t651 = load { ptr, i64, i64 }, ptr %t650 + store { ptr, i64, i64 } { ptr @.str.5251, i64 4, i64 0 }, ptr %a653 + store { ptr, i64, i64 } %t651, ptr %a654 + call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) + %t655 = load { ptr, i64, i64 }, ptr %a652 + store { ptr, i64, i64 } %t655, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a658 + call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) + %t659 = load { ptr, i64, i64 }, ptr %a656 + %t660 = load %S.ast.Type, ptr %a370 + %t661 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t660) + store { ptr, i64, i64 } %t659, ptr %a663 + store { ptr, i64, i64 } %t661, ptr %a664 + call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) + %t665 = load { ptr, i64, i64 }, ptr %a662 + store { ptr, i64, i64 } %t665, ptr %a667 + store { ptr, i64, i64 } { ptr @.str.5253, i64 16, i64 0 }, ptr %a668 + call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a666 + %t670 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t671 = load { ptr, i64, i64 }, ptr %t670 + store { ptr, i64, i64 } %t669, ptr %a673 + store { ptr, i64, i64 } %t671, ptr %a674 + call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) + %t675 = load { ptr, i64, i64 }, ptr %a672 + store { ptr, i64, i64 } %t675, ptr %a677 + store { ptr, i64, i64 } { ptr @.str.5254, i64 11, i64 0 }, ptr %a678 + call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678) + %t679 = load { ptr, i64, i64 }, ptr %a676 + %t680 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5255, i64 2, i64 0 }, ptr %a681 + call void @finch_str_join(ptr %a682, ptr %a561, ptr %a681) + %t683 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t679, ptr %a685 + store { ptr, i64, i64 } %t683, ptr %a686 + call void @finch_str_concat(ptr %a684, ptr %a685, ptr %a686) + %t687 = load { ptr, i64, i64 }, ptr %a684 + store { ptr, i64, i64 } %t687, ptr %a689 + store { ptr, i64, i64 } { ptr @.str.5256, i64 1, i64 0 }, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + %t691 = load { ptr, i64, i64 }, ptr %a688 + call void @finch.gen.fail(ptr %t648, %S.ast.Node %t649, { ptr, i64, i64 } %t691) + br label %endif7956 +endif7956: + %t692 = load ptr, ptr %a1 + %t693 = icmp eq ptr %t692, null + br i1 %t693, label %panic7973, label %ok7974 +panic7973: + call void @finch_panic(ptr @.str.5257, i64 4756, ptr @.str.5258) + unreachable +ok7974: + %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 + %t695 = load i64, ptr %a493 + %t696 = load { ptr, i64, i64 }, ptr %t694 + %t697 = extractvalue { ptr, i64, i64 } %t696, 1 + %t698 = icmp uge i64 %t695, %t697 + br i1 %t698, label %range7975, label %inrange7976 +range7975: + call void @finch_panic_index(ptr @.str.5259, i64 4756, i64 %t695, i64 %t697) + unreachable +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) + ret %S.gen.Val zeroinitializer +} + +define internal void @finch.gen.need(ptr %p0, %S.ast.Node %p1, i64 %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca 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 = load %S.ast.Node, ptr %a2 + %t6 = load i64, ptr %a3 + %t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t8 = load { ptr, i64, i64 }, ptr %t7 + call void @finch.gen.checkArgs(ptr %t4, %S.ast.Node %t5, i64 1, i64 %t6, { ptr, i64, i64 } %t8) + ret void +} + +define internal %S.gen.Val @finch.gen.arrayMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.ast.Type, align 16 + %a12 = alloca %S.ast.Type, align 16 + %a13 = alloca %S.ast.Type, align 16 + %a15 = alloca %S.ast.Type, align 16 + %a19 = 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 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = 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 + %a67 = 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 + %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 + %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 + %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 + %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 { 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 + %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 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a143 = 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 + %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 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a190 = 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 + %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 + %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 + %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 + %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 + %a356 = 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 + %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 + %a376 = alloca %S.ast.Type, align 16 + %a377 = alloca %S.ast.Type, align 16 + %a380 = alloca %S.gen.Val, 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 + %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 + %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 + %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 + %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 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a502 = alloca { ptr, i64, i64 }, align 16 + %a503 = 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 + %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 + %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 + %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 + %a664 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a671 = 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 + %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 + %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 + %a738 = 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 + %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 + %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 + %a816 = alloca { ptr, i64, i64 }, 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 + %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 + %a847 = alloca { ptr, i64, i64 }, align 16 + %a848 = alloca { ptr, i64, i64 }, align 16 + %a856 = alloca { ptr, i64, i64 }, align 16 + %a860 = 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 + %a872 = alloca { ptr, i64, i64 }, align 16 + %a876 = 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 + %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 + %a936 = alloca { ptr, i64, i64 }, align 16 + %a939 = 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 + %a951 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a955 = alloca { ptr, i64, i64 }, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a960 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a965 = alloca { ptr, i64, i64 }, align 16 + %a970 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 + %a989 = alloca { ptr, i64, i64 }, align 16 + %a990 = 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 + %a1040 = alloca { ptr, i64, i64 }, align 16 + %a1042 = alloca { ptr, i64, i64 }, align 16 + %a1046 = 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 + %a1058 = 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 + %a1072 = 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 + %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 + %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 + %a1103 = 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 + %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 + %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 + %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 + %a1200 = alloca { ptr, i64, i64 }, align 16 + %a1201 = alloca { ptr, i64, i64 }, align 16 + %a1203 = 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 + %a1214 = alloca { ptr, i64, i64 }, align 16 + %a1215 = alloca { ptr, i64, i64 }, align 16 + %a1218 = 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 + %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 + %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 + %a1256 = alloca { ptr, i64, i64 }, align 16 + %a1259 = 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 + %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 + %a1299 = alloca { ptr, i64, i64 }, align 16 + %a1304 = alloca { ptr, i64, i64 }, align 16 + %a1305 = alloca { ptr, i64, i64 }, align 16 + %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1318 = alloca { ptr, i64, i64 }, align 16 + %a1322 = alloca { ptr, i64, i64 }, align 16 + %a1325 = alloca { ptr, i64, i64 }, align 16 + %a1326 = alloca { ptr, i64, i64 }, align 16 + %a1327 = alloca { ptr, i64, i64 }, align 16 + %a1329 = alloca { ptr, i64, i64 }, align 16 + %a1330 = alloca { ptr, i64, i64 }, align 16 + %a1331 = 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 + %a1345 = alloca { ptr, i64, i64 }, align 16 + %a1346 = alloca { ptr, i64, i64 }, align 16 + %a1347 = 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 + %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 + %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 + 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 + %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, 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 %range8001, label %inrange8002 +range8001: + call void @finch_panic_index(ptr @.str.5268, i64 4779, i64 0, i64 %t7) + unreachable +inrange8002: + %t9 = extractvalue { ptr, i64, i64 } %t6, 0 + %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 + %t11 = load %S.ast.Type, ptr %t10 + 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 { ptr, i64, i64 } @finch.gen.llty(ptr %t16, %S.ast.Type %t17) + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %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 + 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 } %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 + 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) + %t45 = load ptr, ptr %a1 + %t46 = load ptr, ptr %a1 + %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) + 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) + %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) + 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 + %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 + 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 + 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) + %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 + 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 } %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 + 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 + %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) + %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) + 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) + %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 + 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 + 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 } %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 + %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 + 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: + %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 + %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 + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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.5393, i64 6, i64 0 }, ptr %a831 + call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a829 + %t833 = load ptr, ptr %a1 + %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 } %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) + 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) + 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 + 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 + 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 } %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) + 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) + %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) + %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) + 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 + %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 + 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 + 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 + 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 + 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) + %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) + 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 + 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 + 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 } %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 + 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) + ret %S.gen.Val zeroinitializer +} + +define internal { ptr, i64, i64 } @finch.gen.cmpFn(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 + %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 + %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 + %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 + %a69 = 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 + %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 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = 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 + %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 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = 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 + %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 + %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 + %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 + %a164 = 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 + %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 + %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 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a232 = 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 + %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 + %a249 = 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 } %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) + 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) + 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 + 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 + 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 } %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 } %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 + 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 } %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 %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: + %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 +} + +define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a204 = alloca { ptr, i64, i64 }, 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 + %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 + %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 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = 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 + %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 + %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 + %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 + %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 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a308 = 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 + %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 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %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 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a374 = 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 + %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 + %a408 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a411 = alloca { ptr, i64, i64 }, align 16 + %a412 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 + %a421 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a474 = 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 + %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 + %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 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a546 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = 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 + %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 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = 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 + %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 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t5 = load { ptr, i64, i64 }, ptr %t4 + store { ptr, i64, i64 } %t5, ptr %a6 + call void @finch_str_copy(ptr %a7, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load ptr, ptr %a1 + %t11 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t10) + store { ptr, i64, i64 } %t11, ptr %a12 + %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) + unreachable +ok8117: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 1 + %t17 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t18 = load i64, ptr %t17 + %t19 = load { ptr, i64, i64 }, ptr %t16 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range8118, label %inrange8119 +range8118: + call void @finch_panic_index(ptr @.str.5510, i64 4968, i64 %t18, i64 %t20) + unreachable +inrange8119: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 + %t24 = load { ptr, i64, i64 }, ptr %t23 + %t25 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t13, { ptr, i64, i64 } %t24) + 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 + %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) + %t31 = icmp ne i32 %t30, 0 + br i1 %t31, label %then8120, label %endif8122 +then8120: + %t32 = load ptr, ptr %a1 + %t33 = load %S.ast.Node, ptr %a2 + call void @finch.gen.need(ptr %t32, %S.ast.Node %t33, i64 2) + %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 %range8123, label %inrange8124 +range8123: + call void @finch_panic_index(ptr @.str.5512, i64 4971, i64 1, i64 %t38) + unreachable +inrange8124: + %t40 = extractvalue { ptr, i64, i64 } %t37, 0 + %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 1 + %t42 = load %S.ast.Node, ptr %t41 + %t43 = call %S.gen.Val @finch.gen.expr(ptr %t35, %S.ast.Node %t42) + %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5513, i64 3, i64 0 }) + %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t46 = load { ptr, i64, i64 }, ptr %t45 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 1, %t47 + br i1 %t48, label %range8125, label %inrange8126 +range8125: + call void @finch_panic_index(ptr @.str.5514, i64 4971, i64 1, i64 %t47) + unreachable +inrange8126: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 + %t51 = load %S.ast.Node, ptr %t50 + %t52 = call %S.gen.Val @finch.gen.coerce(ptr %t34, %S.gen.Val %t43, %S.ast.Type %t44, %S.ast.Node %t51, { ptr, i64, i64 } { ptr @.str.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) + 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) + 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 + 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 } %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: + %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 + 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 + 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 + %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 + 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 } %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 + store { ptr, i64, i64 } %t410, ptr %a412 + store { ptr, i64, i64 } { ptr @.str.5574, i64 6, i64 0 }, ptr %a413 + call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) + %t414 = load { ptr, i64, i64 }, ptr %a411 + %t415 = load { ptr, i64, i64 }, ptr %a386 + 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) + 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) + 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) + 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 + %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) + 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) + %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 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 + store { ptr, i64, i64 } { ptr @.str.5607, i64 65, i64 0 }, ptr %t4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 + store { ptr, i64, i64 } { ptr @.str.5608, 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 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 + store { ptr, i64, i64 } { ptr @.str.5610, i64 32, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 + store { ptr, i64, i64 } { ptr @.str.5611, i64 45, 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 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 + store { ptr, i64, i64 } { ptr @.str.5613, i64 36, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 + store { ptr, i64, i64 } { ptr @.str.5614, i64 42, 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 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 + store { ptr, i64, i64 } { ptr @.str.5616, i64 38, i64 0 }, ptr %t13 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 + store { ptr, i64, i64 } { ptr @.str.5617, 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 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 + store { ptr, i64, i64 } { ptr @.str.5619, i64 37, i64 0 }, ptr %t16 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 + store { ptr, i64, i64 } { ptr @.str.5620, 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 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 + store { ptr, i64, i64 } { ptr @.str.5622, i64 34, i64 0 }, ptr %t19 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 + store { ptr, i64, i64 } { ptr @.str.5623, 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 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 + store { ptr, i64, i64 } { ptr @.str.5625, i64 47, i64 0 }, ptr %t22 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 + store { ptr, i64, i64 } { ptr @.str.5626, i64 50, 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 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 + store { ptr, i64, i64 } { ptr @.str.5628, i64 44, i64 0 }, ptr %t25 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 + store { ptr, i64, i64 } { ptr @.str.5629, i64 49, 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 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 + store { ptr, i64, i64 } { ptr @.str.5631, i64 37, i64 0 }, ptr %t28 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 + store { ptr, i64, i64 } { ptr @.str.5632, i64 39, 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 + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 + store { ptr, i64, i64 } { ptr @.str.5634, i64 38, i64 0 }, ptr %t31 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 + store { ptr, i64, i64 } { ptr @.str.5635, 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 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 + store { ptr, i64, i64 } { ptr @.str.5637, i64 51, i64 0 }, ptr %t34 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 + store { ptr, i64, i64 } { ptr @.str.5638, i64 44, 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 + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 + store { ptr, i64, i64 } { ptr @.str.5640, i64 45, i64 0 }, ptr %t37 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 + store { ptr, i64, i64 } { ptr @.str.5641, 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 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 + store { ptr, i64, i64 } { ptr @.str.5643, i64 57, i64 0 }, ptr %t40 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 + store { ptr, i64, i64 } { ptr @.str.5644, i64 48, 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 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 + store { ptr, i64, i64 } { ptr @.str.5646, i64 48, i64 0 }, ptr %t43 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 + store { ptr, i64, i64 } { ptr @.str.5647, i64 60, 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 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 + store { ptr, i64, i64 } { ptr @.str.5649, i64 46, i64 0 }, ptr %t46 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 + store { ptr, i64, i64 } { ptr @.str.5650, i64 48, 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 + %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 + store { ptr, i64, i64 } { ptr @.str.5652, i64 45, i64 0 }, ptr %t49 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 + store { ptr, i64, i64 } { ptr @.str.5653, i64 59, 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 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 + store { ptr, i64, i64 } { ptr @.str.5655, i64 39, i64 0 }, ptr %t52 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 + store { ptr, i64, i64 } { ptr @.str.5656, i64 39, 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 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 + store { ptr, i64, i64 } { ptr @.str.5658, i64 35, i64 0 }, ptr %t55 + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 + store { ptr, i64, i64 } { ptr @.str.5659, i64 45, 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 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 + store { ptr, i64, i64 } { ptr @.str.5661, i64 47, i64 0 }, ptr %t58 + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 + store { ptr, i64, i64 } { ptr @.str.5662, i64 48, 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 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 + store { ptr, i64, i64 } { ptr @.str.5664, i64 37, i64 0 }, ptr %t61 + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 + store { ptr, i64, i64 } { ptr @.str.5665, i64 49, 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 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 + store { ptr, i64, i64 } { ptr @.str.5667, i64 29, i64 0 }, ptr %t64 + %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 + store { ptr, i64, i64 } { ptr @.str.5668, i64 35, 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 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 + store { ptr, i64, i64 } { ptr @.str.5670, i64 24, i64 0 }, ptr %t67 + %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 + store { ptr, i64, i64 } { ptr @.str.5671, i64 40, 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 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 + store { ptr, i64, i64 } { ptr @.str.5673, i64 34, i64 0 }, ptr %t70 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 + store { ptr, i64, i64 } { ptr @.str.5674, i64 44, 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 + %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 +} + +define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = 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 + %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 + %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 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.5679, 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) + unreachable +ok8191: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 + %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 + %t7 = load i1, ptr %t6 + br i1 %t7, label %then8192, label %endif8194 +then8192: + %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 + 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) + unreachable +ok8196: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 29 + %t16 = getelementptr inbounds %S.platform.Target, ptr %t15, i32 0, i32 0 + %t17 = load { ptr, i64, i64 }, ptr %t16 + store { ptr, i64, i64 } %t12, ptr %a19 + 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) + 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 + 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 + 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: + %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) + 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) + 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) + 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 +} + +define internal void @finch.copy.arr_S_ast_Program(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.ast.Program, 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.cond8211 +n.cond8211: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body8212, label %n.end8213 +n.body8212: + %t8 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.ast.Program, ptr %t2, i64 %t6 + call void @finch.copy.S_ast_Program(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond8211 +n.end8213: + ret void +} + +define internal void @finch.copy.S_cimport_CFunc(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.cimport.CFunc, ptr %src + store %S.cimport.CFunc %t1, ptr %dst + %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.cimport.CFunc, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.cimport.CFunc, ptr %src, i32 0, i32 2 + call void @finch.copy.S_ast_Type(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.cimport.CFunc, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.cimport.CFunc, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_S_ast_Type(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.cimport.CFunc, ptr %dst, i32 0, i32 5 + %t11 = getelementptr inbounds %S.cimport.CFunc, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t10, ptr %t11) + ret void +} + +define internal void @finch.copy.map_str_S_cimport_CFunc(ptr %dst, ptr %src) { +entry: + %a3 = alloca i64, align 16 + call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64)) + %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: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8215, label %n.end8216 +n.body8215: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %dst, i32 0, i32 0 + %t10 = load ptr, ptr %t9 + %t11 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t10, i64 %t4 + %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: + %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: + %t19 = load i64, ptr %a3 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a3 + br label %n.cond8214 +n.end8216: + ret void +} + +define internal void @finch.copy.map_str_S_cimport_CConst(ptr %dst, ptr %src) { +entry: + %a3 = alloca i64, align 16 + call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64)) + %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: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8220, label %n.end8221 +n.body8220: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %dst, i32 0, i32 0 + %t10 = load ptr, ptr %t9 + %t11 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t10, i64 %t4 + %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: + %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: + %t19 = load i64, ptr %a3 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a3 + br label %n.cond8219 +n.end8221: + ret void +} + +define internal void @finch.copy.map_str_S_ast_Type(ptr %dst, ptr %src) { +entry: + %a3 = alloca i64, align 16 + call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64)) + %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: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8225, label %n.end8226 +n.body8225: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %dst, i32 0, i32 0 + %t10 = load ptr, ptr %t9 + %t11 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t10, i64 %t4 + %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: + %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: + %t19 = load i64, ptr %a3 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a3 + br label %n.cond8224 +n.end8226: + ret void +} + +define internal void @finch.copy.map_str_S_cimport_CStruct(ptr %dst, ptr %src) { +entry: + %a3 = alloca i64, align 16 + call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64)) + %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: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, %t2 + br i1 %t5, label %n.body8230, label %n.end8231 +n.body8230: + %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 + %t7 = load ptr, ptr %t6 + %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 + %t9 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %dst, i32 0, i32 0 + %t10 = load ptr, ptr %t9 + %t11 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t10, i64 %t4 + %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: + %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: + %t19 = load i64, ptr %a3 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a3 + br label %n.cond8229 +n.end8231: + ret void +} + +define internal void @finch.copy.S_cimport_CImports(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.cimport.CImports, ptr %src + store %S.cimport.CImports %t1, ptr %dst + %t2 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 0 + call void @finch.copy.map_str_S_cimport_CFunc(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 1 + call void @finch.copy.map_str_S_cimport_CConst(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 2 + call void @finch.copy.map_str_S_ast_Type(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 3 + call void @finch.copy.map_str_S_cimport_CStruct(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.cimport.CImports, ptr %dst, i32 0, i32 4 + %t11 = getelementptr inbounds %S.cimport.CImports, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + 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 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca %S.cimport.CImports, align 16 + %a4 = alloca %S.gen.Options, align 16 + %a7 = alloca i1, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca %S.cimport.CImports, align 16 + %a20 = alloca %S.cimport.CImports, align 16 + %a34 = alloca %S.platform.Target, align 16 + %a35 = alloca %S.platform.Target, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca %S.gen.Gen, align 16 + %a46 = alloca ptr, align 16 + %a75 = alloca i64, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + %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 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a342 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %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 + %a355 = 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 + %a361 = 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 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca { ptr, i64, i64 }, align 16 + %a387 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a407 = alloca { ptr, i64, i64 }, align 16 + %a408 = alloca { ptr, i64, i64 }, align 16 + %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 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store %S.cimport.CImports %p2, ptr %a3 + store %S.gen.Options %p3, ptr %a4 + %t5 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 0 + %t6 = load i1, ptr %t5 + store i1 %t6, ptr %a7 + %t8 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t8, ptr %a9 + call void @finch.copy.arr_S_ast_Program(ptr %a10, ptr %a9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + %t12 = insertvalue %S.gen.Gen zeroinitializer, { ptr, i64, i64 } %t11, 0 + %t13 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t13, ptr %a14 + call void @finch.copy.arr_str(ptr %a15, ptr %a14) + %t16 = load { ptr, i64, i64 }, ptr %a15 + %t17 = insertvalue %S.gen.Gen %t12, { ptr, i64, i64 } %t16, 1 + %t18 = load %S.cimport.CImports, ptr %a3 + 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 + %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 + %t26 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 1 + %t27 = load i1, ptr %t26 + %t28 = insertvalue %S.gen.Gen %t25, i1 %t27, 26 + %t29 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 2 + %t30 = load i1, ptr %t29 + %t31 = insertvalue %S.gen.Gen %t28, i1 %t30, 28 + %t32 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 4 + %t33 = load %S.platform.Target, ptr %t32 + store %S.platform.Target %t33, ptr %a34 + call void @finch.copy.S_platform_Target(ptr %a35, ptr %a34) + %t36 = load %S.platform.Target, ptr %a35 + %t37 = insertvalue %S.gen.Gen %t31, %S.platform.Target %t36, 29 + %t38 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 3 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_copy(ptr %a41, ptr %a40) + %t42 = load { ptr, i64, i64 }, ptr %a41 + %t43 = insertvalue %S.gen.Gen %t37, { ptr, i64, i64 } %t42, 30 + %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 34 + store %S.gen.Gen %t44, ptr %a45 + store ptr %a45, ptr %a46 + %t47 = load ptr, ptr %a46 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic8234, label %ok8235 +panic8234: + call void @finch_panic(ptr @.str.5700, i64 5127, ptr @.str.5701) + unreachable +ok8235: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 28 + %t50 = load i1, ptr %t49 + br i1 %t50, label %then8236, label %endif8238 +then8236: + %t51 = load ptr, ptr %a46 + %t52 = icmp eq ptr %t51, null + br i1 %t52, label %panic8239, label %ok8240 +panic8239: + call void @finch_panic(ptr @.str.5702, i64 5129, ptr @.str.5703) + unreachable +ok8240: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 31 + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = add i64 %t55, 1 + call void @finch_arr_reserve(ptr %t53, i64 %t56, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t57 = load ptr, ptr %t53 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55 + store { ptr, i64, i64 } { ptr @.str.5704, i64 0, i64 0 }, ptr %t58 + store i64 %t56, ptr %t54 + %t59 = load ptr, ptr %a46 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic8241, label %ok8242 +panic8241: + call void @finch_panic(ptr @.str.5705, i64 5130, ptr @.str.5706) + unreachable +ok8242: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 31 + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1 + %t63 = load i64, ptr %t62 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %t61, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %t61 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } { ptr @.str.5707, i64 33, i64 0 }, ptr %t66 + store i64 %t64, ptr %t62 + %t67 = load ptr, ptr %a46 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic8243, label %ok8244 +panic8243: + call void @finch_panic(ptr @.str.5708, i64 5131, ptr @.str.5709) + unreachable +ok8244: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 31 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 + %t71 = load i64, ptr %t70 + %t72 = add i64 %t71, 1 + call void @finch_arr_reserve(ptr %t69, i64 %t72, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t73 = load ptr, ptr %t69 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i64 %t71 + store { ptr, i64, i64 } { ptr @.str.5710, i64 38, i64 0 }, ptr %t74 + store i64 %t72, ptr %t70 + store i64 0, ptr %a75 + br label %each.cond8245 +each.cond8245: + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t77 = load i64, ptr %t76 + %t78 = load i64, ptr %a75 + %t79 = icmp slt i64 %t78, %t77 + br i1 %t79, label %each.body8246, label %each.end8248 +each.body8246: + %t80 = load ptr, ptr %a2 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i64 %t78 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = load ptr, ptr %a46 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic8249, label %ok8250 +panic8249: + call void @finch_panic(ptr @.str.5711, i64 5133, ptr @.str.5712) + unreachable +ok8250: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 33 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load ptr, ptr %a46 + %t89 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.5713, i64 19, i64 0 }, ptr %a91 + store { ptr, i64, i64 } %t89, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t93, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.5714, i64 15, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a94 + %t98 = load ptr, ptr %a46 + %t99 = icmp eq ptr %t98, null + br i1 %t99, label %panic8251, label %ok8252 +panic8251: + call void @finch_panic(ptr @.str.5715, i64 5133, ptr @.str.5716) + unreachable +ok8252: + %t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 30 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t97, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.5717, i64 2, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a106 + %t110 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t109) + %t111 = load i64, ptr %t87 + %t112 = add i64 %t111, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t112, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t113 = load ptr, ptr %t86 + %t114 = getelementptr inbounds i64, ptr %t113, i64 %t111 + store i64 %t110, ptr %t114 + store i64 %t112, ptr %t87 + br label %each.step8247 +each.step8247: + %t115 = load i64, ptr %a75 + %t116 = add i64 %t115, 1 + store i64 %t116, ptr %a75 + br label %each.cond8245 +each.end8248: + %t117 = load ptr, ptr %a46 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic8253, label %ok8254 +panic8253: + call void @finch_panic(ptr @.str.5719, i64 5135, ptr @.str.5720) + unreachable +ok8254: + %t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 33 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 0, %t121 + br i1 %t122, label %range8255, label %inrange8256 +range8255: + call void @finch_panic_index(ptr @.str.5721, i64 5135, i64 0, i64 %t121) + unreachable +inrange8256: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds i64, ptr %t123, i64 0 + %t125 = load i64, ptr %t124 + call void @finch_str_from_int(ptr %a126, i64 %t125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.5718, i64 52, i64 0 }, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t131, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.5722, i64 84, i64 0 }, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a132 + %t136 = load ptr, ptr %a46 + %t137 = icmp eq ptr %t136, null + br i1 %t137, label %panic8257, label %ok8258 +panic8257: + call void @finch_panic(ptr @.str.5723, i64 5135, ptr @.str.5724) + unreachable +ok8258: + %t138 = getelementptr inbounds %S.gen.Gen, ptr %t136, i32 0, i32 31 + %t139 = load { ptr, i64, i64 }, ptr %t138 + %t140 = extractvalue { ptr, i64, i64 } %t139, 1 + %t141 = icmp uge i64 0, %t140 + br i1 %t141, label %range8259, label %inrange8260 +range8259: + call void @finch_panic_index(ptr @.str.5725, i64 5135, i64 0, i64 %t140) + unreachable +inrange8260: + %t142 = extractvalue { ptr, i64, i64 } %t139, 0 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 0 + store { ptr, i64, i64 } %t135, ptr %t143 + br label %endif8238 +endif8238: + %t144 = load ptr, ptr %a46 + call void @finch.gen.declare(ptr %t144) + %t145 = load ptr, ptr %a46 + %t146 = call i64 @finch.gen.findFn(ptr %t145, { ptr, i64, i64 } { ptr @.str.5726, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5727, i64 4, i64 0 }) + store i64 %t146, ptr %a147 + %t148 = load i1, ptr %a7 + br i1 %t148, label %then8261, label %else8262 +then8261: + %t149 = load i64, ptr %a147 + %t150 = icmp sge i64 %t149, 0 + br i1 %t150, label %then8264, label %endif8266 +then8264: + %t151 = load ptr, ptr %a46 + %t152 = load ptr, ptr %a46 + %t153 = icmp eq ptr %t152, null + br i1 %t153, label %panic8267, label %ok8268 +panic8267: + call void @finch_panic(ptr @.str.5728, i64 5141, ptr @.str.5729) + 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) + 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) + 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) + 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) + 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) + 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 + %t192 = extractvalue { ptr, i64, i64 } %t191, 1 + %t193 = icmp uge i64 0, %t192 + br i1 %t193, label %range8284, label %inrange8285 +range8284: + call void @finch_panic_index(ptr @.str.5739, i64 5144, i64 0, i64 %t192) + unreachable +inrange8285: + %t194 = extractvalue { ptr, i64, i64 } %t191, 0 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i64 0 + %t196 = load { ptr, i64, i64 }, ptr %t195 + store { ptr, i64, i64 } %t196, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.5740, i64 64, i64 0 }, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a197 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = trunc i64 %t201 to i32 + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = icmp eq ptr %t203, null + %t205 = select i1 %t204, ptr @.str.5741, ptr %t203 + %t206 = call i32 (ptr, ...) @printf(ptr @.str.5742, i32 %t202, ptr %t205) + %t207 = call i32 (ptr, ...) @printf(ptr @.str.5743) + %t208 = trunc i64 1 to i32 + %t209 = call i32 @fflush(ptr null) + call void @exit(i32 %t208) + br label %endif8283 +endif8283: + br label %endif8263 +endif8263: + store i64 0, ptr %a210 + br label %while.cond8286 +while.cond8286: + %t211 = load i64, ptr %a210 + %t212 = load ptr, ptr %a46 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic8289, label %ok8290 +panic8289: + call void @finch_panic(ptr @.str.5744, i64 5149, ptr @.str.5745) + unreachable +ok8290: + %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 14 + %t215 = getelementptr inbounds { ptr, i64, i64 }, ptr %t214, i32 0, i32 1 + %t216 = load i64, ptr %t215 + %t217 = icmp slt i64 %t211, %t216 + br i1 %t217, label %while.body8287, label %while.end8288 +while.body8287: + %t218 = load ptr, ptr %a46 + %t219 = load i64, ptr %a210 + call void @finch.gen.define(ptr %t218, i64 %t219) + %t220 = load i64, ptr %a210 + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a210 + br label %while.cond8286 +while.end8288: + %t222 = load ptr, ptr %a46 + %t223 = icmp eq ptr %t222, null + br i1 %t223, label %panic8291, label %ok8292 +panic8291: + call void @finch_panic(ptr @.str.5746, i64 5153, ptr @.str.5747) + unreachable +ok8292: + %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 26 + %t225 = load i1, ptr %t224 + br i1 %t225, label %then8293, label %endif8295 +then8293: + %t226 = load ptr, ptr %a46 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic8296, label %ok8297 +panic8296: + call void @finch_panic(ptr @.str.5748, i64 5154, ptr @.str.5749) + unreachable +ok8297: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 0 + %t229 = load { ptr, i64, i64 }, ptr %t228 + %t230 = extractvalue { ptr, i64, i64 } %t229, 1 + %t231 = icmp uge i64 0, %t230 + br i1 %t231, label %range8298, label %inrange8299 +range8298: + call void @finch_panic_index(ptr @.str.5750, i64 5154, i64 0, i64 %t230) + unreachable +inrange8299: + %t232 = extractvalue { ptr, i64, i64 } %t229, 0 + %t233 = getelementptr inbounds %S.ast.Program, ptr %t232, i64 0 + %t234 = getelementptr inbounds %S.ast.Program, ptr %t233, i32 0, i32 2 + %t235 = load { ptr, i64, i64 }, ptr %t234 + store { ptr, i64, i64 } %t235, ptr %a236 + call void @finch.copy.arr_str(ptr %a237, ptr %a236) + %t238 = load { ptr, i64, i64 }, ptr %a237 + store { ptr, i64, i64 } %t238, ptr %a239 + %t240 = load ptr, ptr %a46 + %t241 = load { ptr, i64, i64 }, ptr %a239 + call void @finch.gen.indexAll(ptr %t240, { ptr, i64, i64 } %t241) + %t242 = load ptr, ptr %a46 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic8300, label %ok8301 +panic8300: + call void @finch_panic(ptr @.str.5751, i64 5156, ptr @.str.5752) + unreachable +ok8301: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 27 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5753, i64 1, i64 0 }, ptr %a246 + call void @finch_str_join(ptr %a247, ptr %t244, ptr %a246) + %t248 = load { ptr, i64, i64 }, ptr %a247 + ret { ptr, i64, i64 } %t248 +endif8295: + %t249 = load ptr, ptr %a46 + %t250 = icmp eq ptr %t249, null + br i1 %t250, label %panic8302, label %ok8303 +panic8302: + call void @finch_panic(ptr @.str.5754, i64 5158, ptr @.str.5755) + unreachable +ok8303: + %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 14 + store i64 0, ptr %a252 + br label %each.cond8304 +each.cond8304: + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t251, i32 0, i32 1 + %t254 = load i64, ptr %t253 + %t255 = load i64, ptr %a252 + %t256 = icmp slt i64 %t255, %t254 + br i1 %t256, label %each.body8305, label %each.end8307 +each.body8305: + %t257 = load ptr, ptr %t251 + %t258 = getelementptr inbounds %S.gen.FnSig, ptr %t257, i64 %t255 + %t259 = load %S.gen.FnSig, ptr %t258 + store %S.gen.FnSig %t259, ptr %a260 + %t261 = getelementptr inbounds %S.gen.FnSig, ptr %a260, i32 0, i32 5 + %t262 = load i1, ptr %t261 + br i1 %t262, label %then8308, label %endif8310 +then8308: + %t263 = load ptr, ptr %a46 + %t264 = load %S.gen.FnSig, ptr %a260 + %t265 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t263, %S.gen.FnSig %t264) + br label %endif8310 +endif8310: + br label %each.step8306 +each.step8306: + %t266 = load i64, ptr %a252 + %t267 = add i64 %t266, 1 + store i64 %t267, ptr %a252 + br label %each.cond8304 +each.end8307: + %t268 = load i1, ptr %a7 + br i1 %t268, label %then8311, label %endif8313 +then8311: + store { ptr, i64, i64 } { ptr @.str.5756, i64 0, i64 0 }, ptr %a269 + %t270 = load ptr, ptr %a46 + %t271 = icmp eq ptr %t270, null + br i1 %t271, label %panic8314, label %ok8315 +panic8314: + call void @finch_panic(ptr @.str.5757, i64 5166, ptr @.str.5758) + unreachable +ok8315: + %t272 = getelementptr inbounds %S.gen.Gen, ptr %t270, i32 0, i32 29 + %t273 = getelementptr inbounds %S.platform.Target, ptr %t272, i32 0, i32 1 + %t274 = load i1, ptr %t273 + br i1 %t274, label %then8316, label %endif8318 +then8316: + store { ptr, i64, i64 } { ptr @.str.5759, i64 10, i64 0 }, ptr %a269 + br label %endif8318 +endif8318: + %t275 = load ptr, ptr %a46 + %t276 = icmp eq ptr %t275, null + br i1 %t276, label %panic8319, label %ok8320 +panic8319: + call void @finch_panic(ptr @.str.5760, i64 5169, ptr @.str.5761) + unreachable +ok8320: + %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 3 + %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %t277, i32 0, i32 1 + %t279 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.5762, i64 6, i64 0 }, ptr %a281 + store { ptr, i64, i64 } %t279, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a280 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.5763, i64 107, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + %t287 = load { ptr, i64, i64 }, ptr %a284 + %t288 = load i64, ptr %t278 + %t289 = add i64 %t288, 1 + call void @finch_arr_reserve(ptr %t277, i64 %t289, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t290 = load ptr, ptr %t277 + %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t290, i64 %t288 + store { ptr, i64, i64 } %t287, ptr %t291 + store i64 %t289, ptr %t278 + %t292 = load ptr, ptr %a46 + %t293 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t292) + ret { ptr, i64, i64 } %t293 +endif8313: + %t294 = load ptr, ptr %a46 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic8321, label %ok8322 +panic8321: + call void @finch_panic(ptr @.str.5764, i64 5173, ptr @.str.5765) + unreachable +ok8322: + %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 14 + %t297 = load i64, ptr %a147 + %t298 = load { ptr, i64, i64 }, ptr %t296 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range8323, label %inrange8324 +range8323: + call void @finch_panic_index(ptr @.str.5766, i64 5173, i64 %t297, i64 %t299) + unreachable +inrange8324: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds %S.gen.FnSig, ptr %t301, i64 %t297 + %t303 = load %S.gen.FnSig, ptr %t302 + store %S.gen.FnSig %t303, ptr %a304 + call void @finch.copy.S_gen_FnSig(ptr %a305, ptr %a304) + %t306 = load %S.gen.FnSig, ptr %a305 + store %S.gen.FnSig %t306, ptr %a307 + %t308 = load ptr, ptr %a46 + %t309 = load %S.gen.FnSig, ptr %a307 + %t310 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t308, %S.gen.FnSig %t309) + store { ptr, i64, i64 } { ptr @.str.5767, i64 5, i64 0 }, ptr %a312 + store { ptr, i64, i64 } %t310, ptr %a313 + call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a311 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.5768, i64 1, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a315 + %t319 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 11 + %t320 = load { ptr, i64, i64 }, ptr %t319 + store { ptr, i64, i64 } %t318, ptr %a322 + store { ptr, i64, i64 } %t320, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a321 + store { ptr, i64, i64 } %t324, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.5769, i64 1, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + %t328 = load { ptr, i64, i64 }, ptr %a325 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5770, i64 0, i64 0 }, ptr %a330 + %t331 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 13 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = icmp eq i64 %t333, 1 + br i1 %t334, label %then8325, label %endif8327 +then8325: + store { ptr, i64, i64 } { ptr @.str.5771, i64 133, i64 0 }, ptr %a330 + %t335 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t335, ptr %a337 + store { ptr, i64, i64 } { ptr @.str.5772, i64 20, i64 0 }, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + %t339 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t339, ptr %a329 + br label %endif8327 +endif8327: + %t340 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.5773, i64 1, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + %t344 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t344, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5774, i64 12, i64 0 }, ptr %a345 + %t346 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 9 + %t347 = load i1, ptr %t346 + br i1 %t347, label %then8328, label %else8329 +then8328: + %t348 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5775, i64 5, i64 0 }, ptr %a350 + store { ptr, i64, i64 } %t348, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + %t352 = load { ptr, i64, i64 }, ptr %a349 + store { ptr, i64, i64 } %t352, ptr %a329 + %t353 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t353, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.5776, i64 2, i64 0 }, ptr %a356 + call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) + %t357 = load { ptr, i64, i64 }, ptr %a354 + %t358 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t357, ptr %a360 + store { ptr, i64, i64 } %t358, ptr %a361 + call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) + %t362 = load { ptr, i64, i64 }, ptr %a359 + store { ptr, i64, i64 } %t362, ptr %a364 + store { ptr, i64, i64 } { ptr @.str.5777, i64 1, i64 0 }, ptr %a365 + call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a363 + store { ptr, i64, i64 } %t366, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5778, i64 0, i64 0 }, ptr %a329 + %t367 = load ptr, ptr %a46 + %t368 = load %S.gen.FnSig, ptr %a307 + %t369 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t367, %S.gen.FnSig %t368) + store { ptr, i64, i64 } %t369, ptr %a370 + %t371 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t371, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.5779, i64 21, i64 0 }, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + %t375 = load { ptr, i64, i64 }, ptr %a372 + %t376 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } %t375, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + %t380 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t380, ptr %a382 + store { ptr, i64, i64 } { ptr @.str.5780, i64 62, i64 0 }, ptr %a383 + call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a381 + store { ptr, i64, i64 } %t384, ptr %a330 + %t385 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t385, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.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) + unreachable +ok8338: + %t434 = getelementptr inbounds %S.gen.Gen, ptr %t432, i32 0, i32 3 + %t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i32 0, i32 1 + %t436 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5792, i64 48, i64 0 }, ptr %a438 + store { ptr, i64, i64 } %t436, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + %t440 = load { ptr, i64, i64 }, ptr %a437 + store { ptr, i64, i64 } %t440, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.5793, i64 2, i64 0 }, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + %t444 = load { ptr, i64, i64 }, ptr %a441 + %t445 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t444, ptr %a447 + store { ptr, i64, i64 } %t445, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + %t449 = load { ptr, i64, i64 }, ptr %a446 + store { ptr, i64, i64 } %t449, ptr %a451 + store { ptr, i64, i64 } { ptr @.str.5794, i64 1, i64 0 }, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + %t453 = load { ptr, i64, i64 }, ptr %a450 + %t454 = load { ptr, i64, i64 }, ptr %a345 + store { ptr, i64, i64 } %t453, ptr %a456 + store { ptr, i64, i64 } %t454, ptr %a457 + call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a455 + store { ptr, i64, i64 } %t458, ptr %a460 + store { ptr, i64, i64 } { ptr @.str.5795, i64 2, i64 0 }, ptr %a461 + call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) + %t462 = load { ptr, i64, i64 }, ptr %a459 + %t463 = load i64, ptr %t435 + %t464 = add i64 %t463, 1 + call void @finch_arr_reserve(ptr %t434, i64 %t464, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t465 = load ptr, ptr %t434 + %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 %t463 + store { ptr, i64, i64 } %t462, ptr %t466 + store i64 %t464, ptr %t435 + %t467 = load ptr, ptr %a46 + %t468 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t467) + ret { ptr, i64, i64 } %t468 +} + +define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + %t8 = insertvalue %S.docs.Doc zeroinitializer, { ptr, i64, i64 } %t7, 0 + %t9 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t9, ptr %a10 + call void @finch_str_copy(ptr %a11, ptr %a10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + %t13 = insertvalue %S.docs.Doc %t8, { ptr, i64, i64 } %t12, 1 + %t14 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_copy(ptr %a16, ptr %a15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + %t18 = insertvalue %S.docs.Doc %t13, { ptr, i64, i64 } %t17, 2 + ret %S.docs.Doc %t18 +} + +define internal { ptr, i64, i64 } @finch.docs.builtins() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5796, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5797, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5798, i64 78, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5799, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5800, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.5801, i64 77, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5802, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5803, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5804, i64 121, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5805, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5806, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.5807, i64 83, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5808, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5809, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5810, i64 29, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5811, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5812, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5813, i64 73, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5814, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5815, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5816, i64 98, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5817, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5818, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.5819, i64 66, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5820, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5821, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5822, i64 48, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5823, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5824, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5825, i64 77, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5827, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5828, i64 66, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5829, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5830, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5831, i64 73, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5832, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5833, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5834, i64 61, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5835, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5836, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5837, i64 130, i64 0 }) + %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5838, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5839, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5840, i64 75, i64 0 }) + %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5841, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5842, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5843, i64 29, i64 0 }) + %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5844, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5845, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5846, i64 26, i64 0 }) + %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5847, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5848, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5849, i64 88, i64 0 }) + %t19 = mul i64 18, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t20 = call ptr @finch_alloc(i64 %t19) + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 0 + store %S.docs.Doc %t1, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 1 + store %S.docs.Doc %t2, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 2 + store %S.docs.Doc %t3, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 3 + store %S.docs.Doc %t4, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 4 + store %S.docs.Doc %t5, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 5 + store %S.docs.Doc %t6, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 6 + store %S.docs.Doc %t7, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 7 + store %S.docs.Doc %t8, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 8 + store %S.docs.Doc %t9, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 9 + store %S.docs.Doc %t10, ptr %t30 + %t31 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 10 + store %S.docs.Doc %t11, ptr %t31 + %t32 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 11 + store %S.docs.Doc %t12, ptr %t32 + %t33 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 12 + store %S.docs.Doc %t13, ptr %t33 + %t34 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 13 + store %S.docs.Doc %t14, ptr %t34 + %t35 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 14 + store %S.docs.Doc %t15, ptr %t35 + %t36 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 15 + store %S.docs.Doc %t16, ptr %t36 + %t37 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 16 + store %S.docs.Doc %t17, ptr %t37 + %t38 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 17 + store %S.docs.Doc %t18, ptr %t38 + %t39 = insertvalue { ptr, i64, i64 } undef, ptr %t20, 0 + %t40 = insertvalue { ptr, i64, i64 } %t39, i64 18, 1 + %t41 = insertvalue { ptr, i64, i64 } %t40, i64 18, 2 + ret { ptr, i64, i64 } %t41 +} + +define internal { ptr, i64, i64 } @finch.docs.arrayMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5850, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5851, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5852, i64 23, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5854, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5855, i64 40, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5857, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5858, i64 18, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5859, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5860, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5861, i64 43, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5862, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5863, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5864, i64 38, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5866, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5867, i64 37, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5868, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5869, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5870, i64 19, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5871, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5872, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5873, i64 46, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5874, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5875, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5876, i64 22, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5877, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5878, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5879, i64 18, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5880, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5881, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5882, i64 37, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5883, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5884, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5885, i64 18, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5886, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5887, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5888, i64 45, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5889, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5890, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5891, i64 47, i64 0 }) + %t15 = mul i64 14, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t16 = call ptr @finch_alloc(i64 %t15) + %t17 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 0 + store %S.docs.Doc %t1, ptr %t17 + %t18 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 1 + store %S.docs.Doc %t2, ptr %t18 + %t19 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 2 + store %S.docs.Doc %t3, ptr %t19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 3 + store %S.docs.Doc %t4, ptr %t20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 4 + store %S.docs.Doc %t5, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 5 + store %S.docs.Doc %t6, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 6 + store %S.docs.Doc %t7, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 7 + store %S.docs.Doc %t8, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 8 + store %S.docs.Doc %t9, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 9 + store %S.docs.Doc %t10, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 10 + store %S.docs.Doc %t11, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 11 + store %S.docs.Doc %t12, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 12 + store %S.docs.Doc %t13, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 13 + store %S.docs.Doc %t14, ptr %t30 + %t31 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 + %t32 = insertvalue { ptr, i64, i64 } %t31, i64 14, 1 + %t33 = insertvalue { ptr, i64, i64 } %t32, i64 14, 2 + ret { ptr, i64, i64 } %t33 +} + +define internal { ptr, i64, i64 } @finch.docs.strMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5892, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5893, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5894, i64 20, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5895, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5896, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5897, i64 59, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5898, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5899, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.5900, i64 29, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5901, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5902, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5903, i64 22, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5904, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5905, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5906, i64 24, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5907, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5908, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5909, i64 27, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5910, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5911, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5912, i64 25, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5913, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5914, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5915, i64 62, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5916, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5917, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5918, i64 41, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5919, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5920, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5921, i64 24, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5922, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5923, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5924, i64 24, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5925, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5926, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5927, i64 26, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5928, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5930, i64 17, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5931, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5932, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5933, i64 22, i64 0 }) + %t15 = mul i64 14, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t16 = call ptr @finch_alloc(i64 %t15) + %t17 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 0 + store %S.docs.Doc %t1, ptr %t17 + %t18 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 1 + store %S.docs.Doc %t2, ptr %t18 + %t19 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 2 + store %S.docs.Doc %t3, ptr %t19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 3 + store %S.docs.Doc %t4, ptr %t20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 4 + store %S.docs.Doc %t5, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 5 + store %S.docs.Doc %t6, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 6 + store %S.docs.Doc %t7, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 7 + store %S.docs.Doc %t8, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 8 + store %S.docs.Doc %t9, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 9 + store %S.docs.Doc %t10, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 10 + store %S.docs.Doc %t11, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 11 + store %S.docs.Doc %t12, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 12 + store %S.docs.Doc %t13, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 13 + store %S.docs.Doc %t14, ptr %t30 + %t31 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 + %t32 = insertvalue { ptr, i64, i64 } %t31, i64 14, 1 + %t33 = insertvalue { ptr, i64, i64 } %t32, i64 14, 2 + ret { ptr, i64, i64 } %t33 +} + +define internal { ptr, i64, i64 } @finch.docs.mapMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5934, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5935, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5936, i64 19, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5937, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5938, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5939, i64 22, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5941, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5942, i64 53, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5943, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5944, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5945, i64 52, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5946, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5947, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5948, i64 19, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5949, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5950, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5951, i64 39, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5952, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5953, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5954, i64 47, i64 0 }) + %t8 = mul i64 7, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t9 = call ptr @finch_alloc(i64 %t8) + %t10 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 0 + store %S.docs.Doc %t1, ptr %t10 + %t11 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 1 + store %S.docs.Doc %t2, ptr %t11 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 2 + store %S.docs.Doc %t3, ptr %t12 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 3 + store %S.docs.Doc %t4, ptr %t13 + %t14 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 4 + store %S.docs.Doc %t5, ptr %t14 + %t15 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 5 + store %S.docs.Doc %t6, ptr %t15 + %t16 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 6 + store %S.docs.Doc %t7, ptr %t16 + %t17 = insertvalue { ptr, i64, i64 } undef, ptr %t9, 0 + %t18 = insertvalue { ptr, i64, i64 } %t17, i64 7, 1 + %t19 = insertvalue { ptr, i64, i64 } %t18, i64 7, 2 + ret { ptr, i64, i64 } %t19 +} + +define internal { ptr, i64, i64 } @finch.docs.keywords() { +entry: + + %t1 = mul i64 22, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t2 = call ptr @finch_alloc(i64 %t1) + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 + store { ptr, i64, i64 } { ptr @.str.5955, i64 2, i64 0 }, ptr %t3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 + store { ptr, i64, i64 } { ptr @.str.5956, i64 6, i64 0 }, ptr %t4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 + store { ptr, i64, i64 } { ptr @.str.5957, i64 2, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 + store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 + store { ptr, i64, i64 } { ptr @.str.5959, i64 5, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 + store { ptr, i64, i64 } { ptr @.str.5960, i64 3, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 + store { ptr, i64, i64 } { ptr @.str.5961, i64 2, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 + store { ptr, i64, i64 } { ptr @.str.5962, i64 5, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 + store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 + store { ptr, i64, i64 } { ptr @.str.5964, i64 4, i64 0 }, ptr %t12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 + store { ptr, i64, i64 } { ptr @.str.5965, i64 5, i64 0 }, ptr %t13 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 + store { ptr, i64, i64 } { ptr @.str.5966, i64 4, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 + store { ptr, i64, i64 } { ptr @.str.5967, i64 6, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 + store { ptr, i64, i64 } { ptr @.str.5968, i64 4, i64 0 }, ptr %t16 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 + store { ptr, i64, i64 } { ptr @.str.5969, i64 6, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 + store { ptr, i64, i64 } { ptr @.str.5970, i64 4, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 + store { ptr, i64, i64 } { ptr @.str.5971, i64 5, i64 0 }, ptr %t19 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 + store { ptr, i64, i64 } { ptr @.str.5972, i64 6, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 + store { ptr, i64, i64 } { ptr @.str.5973, i64 5, i64 0 }, ptr %t21 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 + store { ptr, i64, i64 } { ptr @.str.5974, i64 2, i64 0 }, ptr %t22 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 + store { ptr, i64, i64 } { ptr @.str.5975, i64 3, i64 0 }, ptr %t23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 + store { ptr, i64, i64 } { ptr @.str.5976, i64 4, i64 0 }, ptr %t24 + %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t26 = insertvalue { ptr, i64, i64 } %t25, i64 22, 1 + %t27 = insertvalue { ptr, i64, i64 } %t26, i64 22, 2 + ret { ptr, i64, i64 } %t27 +} + +define internal { ptr, i64, i64 } @finch.docs.typeNames() { +entry: + + %t1 = mul i64 17, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t2 = call ptr @finch_alloc(i64 %t1) + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 + store { ptr, i64, i64 } { ptr @.str.5977, i64 3, i64 0 }, ptr %t3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 + store { ptr, i64, i64 } { ptr @.str.5978, i64 5, i64 0 }, ptr %t4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 + store { ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 + store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 + store { ptr, i64, i64 } { ptr @.str.5981, i64 3, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 + store { ptr, i64, i64 } { ptr @.str.5982, i64 3, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 + store { ptr, i64, i64 } { ptr @.str.5983, i64 3, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 + store { ptr, i64, i64 } { ptr @.str.5984, i64 2, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 + store { ptr, i64, i64 } { ptr @.str.5985, i64 3, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 + store { ptr, i64, i64 } { ptr @.str.5986, i64 3, i64 0 }, ptr %t12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 + store { ptr, i64, i64 } { ptr @.str.5987, i64 3, i64 0 }, ptr %t13 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 + store { ptr, i64, i64 } { ptr @.str.5988, i64 2, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 + store { ptr, i64, i64 } { ptr @.str.5989, i64 3, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 + store { ptr, i64, i64 } { ptr @.str.5990, i64 3, i64 0 }, ptr %t16 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 + store { ptr, i64, i64 } { ptr @.str.5991, i64 3, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 + store { ptr, i64, i64 } { ptr @.str.5992, i64 3, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 + store { ptr, i64, i64 } { ptr @.str.5993, i64 3, i64 0 }, ptr %t19 + %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 + %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 + ret { ptr, i64, i64 } %t22 +} + +define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca %S.docs.Doc, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond8339 +each.cond8339: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body8340, label %each.end8342 +each.body8340: + %t8 = load ptr, ptr %a1 + %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 + %t10 = load %S.docs.Doc, ptr %t9 + store %S.docs.Doc %t10, ptr %a11 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 + %t13 = load { ptr, i64, i64 }, ptr %t12 + %t14 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } %t14, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br i1 %t18, label %then8343, label %endif8345 +then8343: + %t19 = load %S.docs.Doc, ptr %a11 + ret %S.docs.Doc %t19 +endif8345: + br label %each.step8341 +each.step8341: + %t20 = load i64, ptr %a3 + %t21 = add i64 %t20, 1 + store i64 %t21, ptr %a3 + br label %each.cond8339 +each.end8342: + ret %S.docs.Doc zeroinitializer +} + +define internal { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %p0) { +entry: + %a1 = alloca %S.docs.Doc, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store %S.docs.Doc %p0, ptr %a1 + %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 + %t3 = load { ptr, i64, i64 }, ptr %t2 + store { ptr, i64, i64 } { ptr @.str.5994, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5995, i64 5, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t11, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t17 +} + +define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { +entry: + %a1 = alloca %S.C.CXString, align 16 + %a3 = alloca [32 x i8], 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 + %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 + %t4 = getelementptr inbounds i8, ptr %a3, i64 0 + %t5 = load [2 x i64], ptr %t4 + %t6 = call ptr @clang_getCString([2 x i64] %t5) + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + call void @finch_str_from_c(ptr %a7, ptr %t6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + call void @finch_str_copy(ptr %a10, ptr %a9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + store { ptr, i64, i64 } %t11, ptr %a12 + %t13 = load %S.C.CXString, ptr %a1 + store %S.C.CXString %t13, ptr %a14 + %t15 = getelementptr inbounds i8, ptr %a14, i64 0 + %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 +} + +define internal %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %p0) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a3 = alloca %S.ast.Type, align 16 + %a4 = alloca %S.ast.Type, align 16 + store %S.ast.Type %p0, ptr %a1 + %t2 = load %S.ast.Type, ptr %a1 + store %S.ast.Type %t2, ptr %a3 + call void @finch.copy.S_ast_Type(ptr %a4, ptr %a3) + %t5 = load %S.ast.Type, ptr %a4 + %t6 = insertvalue %S.cimport.Mapped zeroinitializer, %S.ast.Type %t5, 0 + %t7 = insertvalue %S.cimport.Mapped %t6, i1 true, 2 + ret %S.cimport.Mapped %t7 +} + +define internal %S.cimport.Mapped @finch.cimport.no({ 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 %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.cimport.Mapped zeroinitializer, { ptr, i64, i64 } %t5, 1 + %t7 = insertvalue %S.cimport.Mapped %t6, i1 false, 2 + ret %S.cimport.Mapped %t7 +} + +define internal %S.ast.Type @finch.cimport.fixed(%S.ast.Type %p0, i64 %p1) { +entry: + %a1 = alloca %S.ast.Type, align 16 + %a2 = alloca i64, align 16 + %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 + %t4 = load i64, ptr %a2 + %t5 = insertvalue %S.ast.Type %t3, i64 %t4, 4 + store %S.ast.Type %t5, ptr %a6 + %t7 = getelementptr inbounds %S.ast.Type, ptr %a6, i32 0, i32 1 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 + %t9 = load %S.ast.Type, ptr %a1 + store %S.ast.Type %t9, ptr %a10 + call void @finch.copy.S_ast_Type(ptr %a11, ptr %a10) + %t12 = load %S.ast.Type, ptr %a11 + %t13 = load i64, ptr %t8 + %t14 = add i64 %t13, 1 + call void @finch_arr_reserve(ptr %t7, i64 %t14, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t15 = load ptr, ptr %t7 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 + 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 +} + +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 + %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 + %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 + %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 + %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 + %a41 = alloca i64, align 16 + %a49 = 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 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = 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 + %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 + %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 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = 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 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.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 + 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 +} + +define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.C.CXType, align 16 + %a3 = alloca %S.C.CXCursor, align 16 + %a5 = alloca %S.C.CXType, align 16 + %a7 = alloca %S.C.CXCursor, align 16 + %a9 = alloca %S.C.CXCursor, align 16 + %a11 = alloca [32 x i8], align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca %S.C.CXCursor, align 16 + %a42 = alloca [32 x i8], 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 + %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 + %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 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = 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 + store %S.C.CXType %t4, ptr %a5 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a3, ptr %a5) + %t6 = load %S.C.CXCursor, ptr %a3 + store %S.C.CXCursor %t6, ptr %a7 + %t8 = load %S.C.CXCursor, ptr %a7 + store %S.C.CXCursor %t8, ptr %a9 + %t10 = call [2 x i64] @clang_getCursorUSR(ptr %a9) + store [2 x i64] %t10, ptr %a11 + %t12 = load %S.C.CXString, ptr %a11 + %t13 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t12) + 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) + unreachable +ok8370: + %t17 = getelementptr inbounds %S.cimport.Importer, ptr %t15, i32 0, i32 3 + %t18 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = call i64 @finch_map_find(ptr %t17, ptr %a19, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t21 = icmp sge i64 %t20, 0 + br i1 %t21, label %then8371, label %endif8373 +then8371: + %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) + unreachable +ok8375: + %t24 = getelementptr inbounds %S.cimport.Importer, ptr %t22, i32 0, i32 3 + %t25 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t25, ptr %a26 + %t27 = call i64 @finch_map_find(ptr %t24, ptr %a26, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t28 = icmp slt i64 %t27, 0 + br i1 %t28, label %map.missing8376, label %map.found8377 +map.missing8376: + store { ptr, i64, i64 } zeroinitializer, ptr %a29 + store { ptr, i64, i64 } %t25, ptr %a30 + call void @finch_buf_str(ptr %a29, ptr %a30, i32 1) + call void @finch_map_missing(ptr @.str.6019, i64 140, ptr %a29) + unreachable +map.found8377: + %t31 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t24, i32 0, i32 0 + %t32 = load ptr, ptr %t31 + %t33 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t32, i64 %t27 + %t34 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t33, i32 0, i32 2 + %t35 = load { ptr, i64, i64 }, ptr %t34 + store { ptr, i64, i64 } %t35, ptr %a36 + call void @finch_str_copy(ptr %a37, ptr %a36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + ret { ptr, i64, i64 } %t38 +endif8373: + %t39 = load %S.C.CXCursor, ptr %a7 + store %S.C.CXCursor %t39, ptr %a40 + %t41 = call [2 x i64] @clang_getCursorSpelling(ptr %a40) + store [2 x i64] %t41, ptr %a42 + %t43 = load %S.C.CXString, ptr %a42 + %t44 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t43) + store { ptr, i64, i64 } %t44, ptr %a45 + %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: + %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 + %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: + %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) + unreachable +ok8386: + %t58 = getelementptr inbounds %S.cimport.Importer, ptr %t56, i32 0, i32 5 + %t59 = load i64, ptr %t58 + %t60 = add i64 %t59, 1 + store i64 %t60, ptr %t58 + %t61 = load ptr, ptr %a1 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic8387, label %ok8388 +panic8387: + call void @finch_panic(ptr @.str.6025, i64 145, ptr @.str.6026) + unreachable +ok8388: + %t63 = getelementptr inbounds %S.cimport.Importer, ptr %t61, i32 0, i32 5 + %t64 = load i64, ptr %t63 + call void @finch_str_from_int(ptr %a65, i64 %t64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.6024, i64 12, i64 0 }, ptr %a68 + store { ptr, i64, i64 } %t66, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t70, ptr %a45 + br label %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) + 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 +} + +define internal i32 @finch.c.cimport.visitField(ptr %c0, ptr %c1) { +entry: + + %t1 = load %S.C.CXCursor, ptr %c0 + %t2 = call i32 @finch.cimport.visitField(%S.C.CXCursor %t1, ptr %c1) + ret i32 %t2 +} + +define internal { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %p0, %S.C.CXType %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.C.CXType, align 16 + %a3 = alloca %S.C.CXType, align 16 + %a5 = alloca %S.C.CXType, align 16 + %a7 = alloca %S.C.CXType, align 16 + %a8 = alloca %S.C.CXCursor, align 16 + %a10 = alloca %S.C.CXType, align 16 + %a12 = alloca %S.C.CXCursor, align 16 + %a14 = alloca %S.C.CXCursor, align 16 + %a16 = alloca [32 x i8], align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %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 + store ptr %p0, ptr %a1 + store %S.C.CXType %p1, ptr %a2 + %t4 = load %S.C.CXType, ptr %a2 + store %S.C.CXType %t4, ptr %a5 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a3, ptr %a5) + %t6 = load %S.C.CXType, ptr %a3 + store %S.C.CXType %t6, ptr %a7 + %t9 = load %S.C.CXType, ptr %a7 + store %S.C.CXType %t9, ptr %a10 + call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a8, ptr %a10) + %t11 = load %S.C.CXCursor, ptr %a8 + store %S.C.CXCursor %t11, ptr %a12 + %t13 = load %S.C.CXCursor, ptr %a12 + store %S.C.CXCursor %t13, ptr %a14 + %t15 = call [2 x i64] @clang_getCursorUSR(ptr %a14) + store [2 x i64] %t15, ptr %a16 + %t17 = load %S.C.CXString, ptr %a16 + %t18 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t17) + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load ptr, ptr %a1 + %t21 = load %S.C.CXType, ptr %a7 + %t22 = call { ptr, i64, i64 } @finch.cimport.recordName(ptr %t20, %S.C.CXType %t21) + 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) + unreachable +ok8394: + %t26 = getelementptr inbounds %S.cimport.Importer, ptr %t24, i32 0, i32 0 + %t27 = getelementptr inbounds %S.cimport.CImports, ptr %t26, i32 0, i32 3 + %t28 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t28, ptr %a29 + %t30 = call i64 @finch_map_find(ptr %t27, ptr %a29, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t31 = icmp sge i64 %t30, 0 + br label %logic.from8395 +logic.from8395: + br i1 %t31, label %logic.end8397, label %logic.rhs8396 +logic.rhs8396: + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic8398, label %ok8399 +panic8398: + call void @finch_panic(ptr @.str.6031, i64 157, ptr @.str.6032) + unreachable +ok8399: + %t34 = getelementptr inbounds %S.cimport.Importer, ptr %t32, i32 0, i32 4 + %t35 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t35, ptr %a36 + %t37 = call i64 @finch_map_find(ptr %t34, ptr %a36, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t38 = icmp sge i64 %t37, 0 + br label %logic.rend8400 +logic.rend8400: + br label %logic.end8397 +logic.end8397: + %t39 = phi i1 [ true, %logic.from8395 ], [ %t38, %logic.rend8400 ] + br i1 %t39, label %then8401, label %endif8403 +then8401: + %t40 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t40, ptr %a41 + call void @finch_str_copy(ptr %a42, ptr %a41) + %t43 = load { ptr, i64, i64 }, ptr %a42 + ret { ptr, i64, i64 } %t43 +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) + 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) + 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) + 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) + 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 +} + +define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { +entry: + %a1 = alloca %S.C.CXCursor, align 16 + %a2 = alloca ptr, align 16 + %a4 = alloca ptr, align 16 + %a6 = alloca %S.C.CXCursor, align 16 + %a8 = alloca [32 x i8], align 16 + %a12 = alloca %S.cimport.CField, align 16 + %a13 = alloca %S.C.CXType, align 16 + %a14 = alloca %S.C.CXType, align 16 + %a16 = alloca %S.C.CXCursor, align 16 + %a18 = alloca %S.C.CXType, align 16 + %a20 = alloca %S.C.CXType, align 16 + %a22 = alloca %S.C.CXCursor, align 16 + %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 + store %S.C.CXCursor %p0, ptr %a1 + store ptr %p1, ptr %a2 + %t3 = load ptr, ptr %a2 + store ptr %t3, ptr %a4 + %t5 = load %S.C.CXCursor, ptr %a1 + store %S.C.CXCursor %t5, ptr %a6 + %t7 = call [2 x i64] @clang_getCursorSpelling(ptr %a6) + store [2 x i64] %t7, ptr %a8 + %t9 = load %S.C.CXString, ptr %a8 + %t10 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t9) + %t11 = insertvalue %S.cimport.CField zeroinitializer, { ptr, i64, i64 } %t10, 0 + store %S.cimport.CField %t11, ptr %a12 + %t15 = load %S.C.CXCursor, ptr %a1 + store %S.C.CXCursor %t15, ptr %a16 + call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a14, ptr %a16) + %t17 = load %S.C.CXType, ptr %a14 + store %S.C.CXType %t17, ptr %a18 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a13, ptr %a18) + %t19 = load %S.C.CXType, ptr %a13 + store %S.C.CXType %t19, ptr %a20 + %t21 = load %S.C.CXCursor, ptr %a1 + store %S.C.CXCursor %t21, ptr %a22 + %t23 = call i64 @clang_Cursor_getOffsetOfField(ptr %a22) + %t24 = sdiv i64 %t23, 8 + %t25 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 2 + store i64 %t24, ptr %t25 + %t26 = load %S.C.CXType, ptr %a20 + store %S.C.CXType %t26, ptr %a27 + %t28 = call i64 @clang_Type_getSizeOf(ptr %a27) + %t29 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 3 + store i64 %t28, ptr %t29 + %t30 = load %S.C.CXType, ptr %a20 + store %S.C.CXType %t30, ptr %a31 + %t32 = call i64 @clang_Type_getAlignOf(ptr %a31) + %t33 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 4 + store i64 %t32, ptr %t33 + %t34 = load %S.C.CXCursor, ptr %a1 + 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: + %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) + unreachable +ok8428: + %t40 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t38, i32 0, i32 1 + %t41 = load ptr, ptr %t40 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic8429, label %ok8430 +panic8429: + call void @finch_panic(ptr @.str.6046, i64 191, ptr @.str.6047) + unreachable +ok8430: + %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) + 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) + 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) + 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) + 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) + 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 + ret i32 1 +} + +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 + %a41 = 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: + %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 }) + %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) + 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 }) + %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) + 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 }) + %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) + 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 +} + +define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.C.CXType, align 16 + %a3 = alloca i1, align 16 + %a4 = alloca i1, align 16 + %a5 = alloca %S.C.CXType, align 16 + %a7 = alloca %S.C.CXType, align 16 + %a9 = alloca %S.C.CXType, align 16 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.C.CXType %p1, ptr %a2 + store i1 %p2, ptr %a3 + store i1 %p3, ptr %a4 + %t6 = load %S.C.CXType, ptr %a2 + store %S.C.CXType %t6, ptr %a7 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a5, ptr %a7) + %t8 = load %S.C.CXType, ptr %a5 + store %S.C.CXType %t8, ptr %a9 + %t10 = load %S.C.CXType, ptr %a9 + store %S.C.CXType %t10, ptr %a11 + %t12 = call i64 @clang_Type_getSizeOf(ptr %a11) + store i64 %t12, ptr %a13 + %t14 = getelementptr inbounds %S.C.CXType, ptr %a9, i32 0, i32 0 + %t15 = load i32, ptr %t14 + 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 }) + %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) + 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: + %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: + %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: + %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: + %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: + %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: + %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: + %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: + %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 }) + 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 +} + +define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i64, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t5, ptr %a6 + 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 + %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: + %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 + %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: + 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) + %t26 = load { ptr, i64, i64 }, ptr %a23 + 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) + 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: + 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) + 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) + 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: + 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: + 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 +} + +define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.C.CXCursor, align 16 + %a3 = alloca ptr, align 16 + %a4 = alloca i32, align 16 + %a9 = alloca %S.C.CXSourceRange, align 16 + %a11 = alloca %S.C.CXCursor, align 16 + %a13 = alloca %S.C.CXSourceRange, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca i64, align 16 + %a24 = alloca %S.C.CXToken, align 16 + %a36 = alloca %S.C.CXToken, align 16 + %a38 = alloca [32 x i8], align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + 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) + unreachable +ok8663: + %t7 = getelementptr inbounds %S.cimport.Importer, ptr %t5, i32 0, i32 1 + %t8 = load ptr, ptr %t7 + %t10 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t10, ptr %a11 + call void @clang_getCursorExtent(ptr sret(%S.C.CXSourceRange) align 16 %a9, ptr %a11) + %t12 = load %S.C.CXSourceRange, ptr %a9 + store %S.C.CXSourceRange %t12, ptr %a13 + call void @clang_tokenize(ptr %t8, ptr %a13, ptr %a3, ptr %a4) + store { ptr, i64, i64 } zeroinitializer, ptr %a14 + %t15 = load i32, ptr %a4 + %t16 = zext i32 %t15 to i64 + store i64 1, ptr %a17 + br label %for.cond8664 +for.cond8664: + %t18 = load i64, ptr %a17 + %t19 = icmp slt i64 %t18, %t16 + br i1 %t19, label %for.body8665, label %for.end8667 +for.body8665: + %t20 = load i64, ptr %a17 + %t21 = load ptr, ptr %a3 + %t22 = getelementptr inbounds %S.C.CXToken, ptr %t21, i64 %t20 + %t23 = load %S.C.CXToken, ptr %t22 + 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: + %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) + unreachable +ok8672: + %t30 = getelementptr inbounds %S.cimport.Importer, ptr %t28, i32 0, i32 1 + %t31 = load ptr, ptr %t30 + %t32 = load i64, ptr %a17 + %t33 = load ptr, ptr %a3 + %t34 = getelementptr inbounds %S.C.CXToken, ptr %t33, i64 %t32 + %t35 = load %S.C.CXToken, ptr %t34 + store %S.C.CXToken %t35, ptr %a36 + %t37 = call [2 x i64] @clang_getTokenSpelling(ptr %t31, ptr %a36) + store [2 x i64] %t37, ptr %a38 + %t39 = load %S.C.CXString, ptr %a38 + %t40 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t39) + %t41 = load i64, ptr %t27 + %t42 = add i64 %t41, 1 + call void @finch_arr_reserve(ptr %a14, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t43 = load ptr, ptr %a14 + %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: + %t45 = load i64, ptr %a17 + %t46 = add i64 %t45, 1 + store i64 %t46, ptr %a17 + br label %for.cond8664 +for.end8667: + %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) + unreachable +ok8674: + %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 1 + %t50 = load ptr, ptr %t49 + %t51 = load ptr, ptr %a3 + %t52 = load i32, ptr %a4 + call void @clang_disposeTokens(ptr %t50, ptr %t51, i32 %t52) + br label %while.cond8675 +while.cond8675: + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t54 = load i64, ptr %t53 + %t55 = icmp sge i64 %t54, 2 + br label %logic.from8678 +logic.from8678: + br i1 %t55, label %logic.rhs8679, label %logic.end8680 +logic.rhs8679: + %t56 = load { ptr, i64, i64 }, ptr %a14 + %t57 = extractvalue { ptr, i64, i64 } %t56, 1 + %t58 = icmp uge i64 0, %t57 + br i1 %t58, label %range8681, label %inrange8682 +range8681: + call void @finch_panic_index(ptr @.str.6102, i64 379, i64 0, i64 %t57) + unreachable +inrange8682: + %t59 = extractvalue { ptr, i64, i64 } %t56, 0 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 0 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.6103, i64 1, i64 0 }, ptr %a63 + %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) + %t65 = icmp ne i32 %t64, 0 + br label %logic.rend8683 +logic.rend8683: + br label %logic.end8680 +logic.end8680: + %t66 = phi i1 [ false, %logic.from8678 ], [ %t65, %logic.rend8683 ] + br label %logic.from8684 +logic.from8684: + br i1 %t66, label %logic.rhs8685, label %logic.end8686 +logic.rhs8685: + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t68 = load i64, ptr %t67 + %t69 = sub i64 %t68, 1 + %t70 = load { ptr, i64, i64 }, ptr %a14 + %t71 = extractvalue { ptr, i64, i64 } %t70, 1 + %t72 = icmp uge i64 %t69, %t71 + br i1 %t72, label %range8687, label %inrange8688 +range8687: + call void @finch_panic_index(ptr @.str.6104, i64 379, i64 %t69, i64 %t71) + unreachable +inrange8688: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i64 %t69 + %t75 = load { ptr, i64, i64 }, ptr %t74 + store { ptr, i64, i64 } %t75, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a77 + %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) + %t79 = icmp ne i32 %t78, 0 + br label %logic.rend8689 +logic.rend8689: + br label %logic.end8686 +logic.end8686: + %t80 = phi i1 [ false, %logic.from8684 ], [ %t79, %logic.rend8689 ] + br i1 %t80, label %while.body8676, label %while.end8677 +while.body8676: + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 + %t82 = load i64, ptr %t81 + %t83 = icmp uge i64 0, %t82 + br i1 %t83, label %range8690, label %inrange8691 +range8690: + call void @finch_panic_index(ptr @.str.6106, i64 380, i64 0, i64 %t82) + unreachable +inrange8691: + %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) + 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) + 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) + unreachable +inrange8704: + %t112 = load ptr, ptr %a14 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0 + %t114 = load { ptr, i64, i64 }, ptr %t113 + call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + br label %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: + 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) + 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 + 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) + 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) + 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) + 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: + 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 + 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) + 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 + 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 +} + +define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { +entry: + %a1 = alloca %S.C.CXCursor, align 16 + %a2 = alloca %S.C.CXCursor, align 16 + %a3 = alloca ptr, align 16 + %a5 = alloca ptr, align 16 + store %S.C.CXCursor %p0, ptr %a1 + store %S.C.CXCursor %p1, ptr %a2 + store ptr %p2, ptr %a3 + %t4 = load ptr, ptr %a3 + store ptr %t4, ptr %a5 + %t6 = load ptr, ptr %a5 + %t7 = load %S.C.CXCursor, ptr %a1 + call void @finch.cimport.visit(ptr %t6, %S.C.CXCursor %t7) + ret i32 1 +} + +define internal i32 @finch.c.cimport.visitTop(ptr %c0, ptr %c1, ptr %c2) { +entry: + + %t1 = load %S.C.CXCursor, ptr %c0 + %t2 = load %S.C.CXCursor, ptr %c1 + %t3 = call i32 @finch.cimport.visitTop(%S.C.CXCursor %t1, %S.C.CXCursor %t2, ptr %c2) + ret i32 %t3 +} + +define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.C.CXCursor, align 16 + %a4 = alloca %S.C.CXCursor, align 16 + %a6 = alloca [32 x i8], align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca %S.C.CXCursor, align 16 + %a13 = alloca i32, align 16 + %a16 = alloca %S.C.CXType, align 16 + %a17 = alloca %S.C.CXType, align 16 + %a19 = alloca %S.C.CXCursor, align 16 + %a21 = alloca %S.C.CXType, align 16 + %a23 = alloca %S.C.CXType, align 16 + %a27 = alloca %S.C.CXCursor, align 16 + %a29 = alloca %S.C.CXType, align 16 + %a31 = alloca %S.C.CXCursor, align 16 + %a33 = alloca [32 x i8], align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a41 = 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 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca i1, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %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 + store ptr %p0, ptr %a1 + store %S.C.CXCursor %p1, ptr %a2 + %t3 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t3, ptr %a4 + %t5 = call [2 x i64] @clang_getCursorSpelling(ptr %a4) + store [2 x i64] %t5, ptr %a6 + %t7 = load %S.C.CXString, ptr %a6 + %t8 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t7) + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t10, ptr %a11 + %t12 = call i32 @clang_getCursorKind(ptr %a11) + store i32 %t12, ptr %a13 + %t14 = load i32, ptr %a13 + %t15 = icmp eq i32 %t14, 20 + br i1 %t15, label %then8767, label %else8768 +then8767: + %t18 = load %S.C.CXCursor, ptr %a2 + store %S.C.CXCursor %t18, ptr %a19 + call void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16 %a17, ptr %a19) + %t20 = load %S.C.CXType, ptr %a17 + store %S.C.CXType %t20, ptr %a21 + call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a16, ptr %a21) + %t22 = load %S.C.CXType, ptr %a16 + store %S.C.CXType %t22, ptr %a23 + %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: + %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) + %t30 = load %S.C.CXCursor, ptr %a27 + store %S.C.CXCursor %t30, ptr %a31 + %t32 = call [2 x i64] @clang_getCursorUSR(ptr %a31) + store [2 x i64] %t32, ptr %a33 + %t34 = load %S.C.CXString, ptr %a33 + %t35 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t34) + 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) + unreachable +ok8774: + %t39 = getelementptr inbounds %S.cimport.Importer, ptr %t37, i32 0, i32 3 + %t40 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t40, ptr %a41 + %t42 = call i64 @finch_map_find(ptr %t39, ptr %a41, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t43 = icmp sge i64 %t42, 0 + br label %logic.from8775 +logic.from8775: + br i1 %t43, label %logic.rhs8776, label %logic.end8777 +logic.rhs8776: + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic8778, label %ok8779 +panic8778: + call void @finch_panic(ptr @.str.6130, i64 433, ptr @.str.6131) + unreachable +ok8779: + %t46 = getelementptr inbounds %S.cimport.Importer, ptr %t44, i32 0, i32 0 + %t47 = getelementptr inbounds %S.cimport.CImports, ptr %t46, i32 0, i32 3 + %t48 = load ptr, ptr %a1 + %t49 = icmp eq ptr %t48, null + br i1 %t49, label %panic8780, label %ok8781 +panic8780: + call void @finch_panic(ptr @.str.6132, i64 433, ptr @.str.6133) + unreachable +ok8781: + %t50 = getelementptr inbounds %S.cimport.Importer, ptr %t48, i32 0, i32 3 + %t51 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t51, ptr %a52 + %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t54 = icmp slt i64 %t53, 0 + br i1 %t54, label %map.missing8782, label %map.found8783 +map.missing8782: + store { ptr, i64, i64 } zeroinitializer, ptr %a55 + store { ptr, i64, i64 } %t51, ptr %a56 + call void @finch_buf_str(ptr %a55, ptr %a56, i32 1) + call void @finch_map_missing(ptr @.str.6134, i64 433, ptr %a55) + unreachable +map.found8783: + %t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t50, i32 0, i32 0 + %t58 = load ptr, ptr %t57 + %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t58, i64 %t53 + %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t59, i32 0, i32 2 + %t61 = load { ptr, i64, i64 }, ptr %t60 + 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 ] + 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: + %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) + unreachable +ok8789: + %t71 = getelementptr inbounds %S.cimport.Importer, ptr %t69, i32 0, i32 0 + %t72 = getelementptr inbounds %S.cimport.CImports, ptr %t71, i32 0, i32 3 + %t73 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t73, ptr %a74 + %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: + %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) + unreachable +ok8795: + %t82 = getelementptr inbounds %S.cimport.Importer, ptr %t80, i32 0, i32 3 + %t83 = load { ptr, i64, i64 }, ptr %a36 + store { ptr, i64, i64 } %t83, ptr %a84 + store i32 0, ptr %a85 + %t86 = call i64 @finch_map_slot(ptr %t82, ptr %a84, 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 %a85) + %t87 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t82, i32 0, i32 0 + %t88 = load ptr, ptr %t87 + %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: + %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: + %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 + store { ptr, i64, i64 } %t79, ptr %a95 + call void @finch_str_copy(ptr %a96, ptr %a95) + %t97 = load { ptr, i64, i64 }, ptr %a96 + store { ptr, i64, i64 } %t97, ptr %t94 + br label %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) + 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: + 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) + 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) + 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 + 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) + 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 + 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) + 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) + 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: + 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) + 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) + 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) + 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) + 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: + %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: + 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) + 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) + 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: + ret void +} + +define internal { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i1 %p3, { ptr, i64, i64 } %p4) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i1, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca %S.cimport.Importer, align 16 + %a12 = alloca %S.cimport.CImports, align 16 + %a13 = alloca %S.cimport.CImports, align 16 + %a25 = 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 + %a45 = alloca 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 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca i64, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca i64, align 16 + %a113 = alloca ptr, align 16 + %a114 = alloca i64, align 16 + %a122 = alloca %S.cimport.Header, 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a267 = 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 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i1 %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + store %S.cimport.Importer zeroinitializer, ptr %a6 + %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: + %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 + %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: + %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 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 + store { ptr, i64, i64 } { ptr @.str.6170, i64 1, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 + store { ptr, i64, i64 } { ptr @.str.6171, i64 10, i64 0 }, ptr %t21 + %t22 = insertvalue { ptr, i64, i64 } undef, ptr %t18, 0 + %t23 = insertvalue { ptr, i64, i64 } %t22, i64 3, 1 + %t24 = insertvalue { ptr, i64, i64 } %t23, i64 3, 2 + store { ptr, i64, i64 } %t24, ptr %a25 + %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: + %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 } %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 %t29 + %t36 = add i64 %t35, 1 + call void @finch_arr_reserve(ptr %a25, i64 %t36, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t37 = load ptr, ptr %a25 + %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: + %t39 = load i1, ptr %a4 + br i1 %t39, label %then8925, label %endif8927 +then8925: + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 + %t41 = load i64, ptr %t40 + %t42 = add i64 %t41, 1 + call void @finch_arr_reserve(ptr %a25, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t43 = load ptr, ptr %a25 + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 + store { ptr, i64, i64 } { ptr @.str.6173, i64 19, i64 0 }, ptr %t44 + store i64 %t42, ptr %t40 + br label %endif8927 +endif8927: + store i64 0, ptr %a45 + br label %each.cond8928 +each.cond8928: + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t47 = load i64, ptr %t46 + %t48 = load i64, ptr %a45 + %t49 = icmp slt i64 %t48, %t47 + br i1 %t49, label %each.body8929, label %each.end8931 +each.body8929: + %t50 = load ptr, ptr %a2 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a53 + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 + %t55 = load { ptr, i64, i64 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.6174, i64 2, i64 0 }, ptr %a57 + store { ptr, i64, i64 } %t55, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a56 + %t60 = load i64, ptr %t54 + %t61 = add i64 %t60, 1 + call void @finch_arr_reserve(ptr %a25, i64 %t61, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t62 = load ptr, ptr %a25 + %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: + %t64 = load i64, ptr %a45 + %t65 = add i64 %t64, 1 + store i64 %t65, ptr %a45 + br label %each.cond8928 +each.end8931: + %t66 = load { ptr, i64, i64 }, ptr %a5 + %t67 = call { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %t66) + store { ptr, i64, i64 } %t67, ptr %a68 + store i64 0, ptr %a69 + br label %each.cond8932 +each.cond8932: + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a68, i32 0, i32 1 + %t71 = load i64, ptr %t70 + %t72 = load i64, ptr %a69 + %t73 = icmp slt i64 %t72, %t71 + br i1 %t73, label %each.body8933, label %each.end8935 +each.body8933: + %t74 = load ptr, ptr %a68 + %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } %t76, ptr %a77 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 + %t79 = load { ptr, i64, i64 }, ptr %a77 + store { ptr, i64, i64 } %t79, ptr %a80 + call void @finch_str_copy(ptr %a81, ptr %a80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + %t83 = load i64, ptr %t78 + %t84 = add i64 %t83, 1 + call void @finch_arr_reserve(ptr %a25, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t85 = load ptr, ptr %a25 + %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: + %t87 = load i64, ptr %a69 + %t88 = add i64 %t87, 1 + store i64 %t88, ptr %a69 + br label %each.cond8932 +each.end8935: + store { ptr, i64, i64 } zeroinitializer, ptr %a89 + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 + %t91 = load i64, ptr %t90 + store i64 0, ptr %a92 + br label %for.cond8936 +for.cond8936: + %t93 = load i64, ptr %a92 + %t94 = icmp slt i64 %t93, %t91 + br i1 %t94, label %for.body8937, label %for.end8939 +for.body8937: + %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 + %t96 = load i64, ptr %a92 + %t97 = load { ptr, i64, i64 }, ptr %a25 + %t98 = extractvalue { ptr, i64, i64 } %t97, 1 + %t99 = icmp uge i64 %t96, %t98 + br i1 %t99, label %range8940, label %inrange8941 +range8940: + call void @finch_panic_index(ptr @.str.6175, i64 528, i64 %t96, i64 %t98) + unreachable +inrange8941: + %t100 = extractvalue { ptr, i64, i64 } %t97, 0 + %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t96 + %t102 = load { ptr, i64, i64 }, ptr %t101 + %t103 = extractvalue { ptr, i64, i64 } %t102, 0 + %t104 = icmp eq ptr %t103, null + %t105 = select i1 %t104, ptr @.str.6176, ptr %t103 + %t106 = load i64, ptr %t95 + %t107 = add i64 %t106, 1 + call void @finch_arr_reserve(ptr %a89, i64 %t107, i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64)) + %t108 = load ptr, ptr %a89 + %t109 = getelementptr inbounds ptr, ptr %t108, i64 %t106 + store ptr %t105, ptr %t109 + store i64 %t107, ptr %t95 + br label %for.step8938 +for.step8938: + %t110 = load i64, ptr %a92 + %t111 = add i64 %t110, 1 + store i64 %t111, ptr %a92 + br label %for.cond8936 +for.end8939: + %t112 = call ptr @clang_createIndex(i32 0, i32 0) + store ptr %t112, ptr %a113 + store i64 0, ptr %a114 + br label %each.cond8942 +each.cond8942: + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = load i64, ptr %a114 + %t118 = icmp slt i64 %t117, %t116 + br i1 %t118, label %each.body8943, label %each.end8945 +each.body8943: + %t119 = load ptr, ptr %a1 + %t120 = getelementptr inbounds %S.cimport.Header, ptr %t119, i64 %t117 + %t121 = load %S.cimport.Header, ptr %t120 + store %S.cimport.Header %t121, ptr %a122 + %t123 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 + %t124 = load { ptr, i64, i64 }, ptr %t123 + store { ptr, i64, i64 } { ptr @.str.6177, i64 10, i64 0 }, ptr %a126 + store { ptr, i64, i64 } %t124, ptr %a127 + call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) + %t128 = load { ptr, i64, i64 }, ptr %a125 + store { ptr, i64, i64 } %t128, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.6178, i64 2, i64 0 }, ptr %a131 + call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) + %t132 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t132, ptr %a133 + %t134 = extractvalue { ptr, i64, i64 } { ptr @.str.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 } %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 + 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 + 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 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.6198, i64 16, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a292 + %t296 = load { ptr, i64, i64 }, ptr %a206 + 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 +} + +define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + 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 + 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) + 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 +} + +define internal { ptr, i64, i64 } @finch.platform.hostTriple() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = 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 + %a15 = 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 + %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 + %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 + %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 +} + +define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %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 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a32 = 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 + %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 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a62 = 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 + %a70 = 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 + %a82 = 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 + %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 + %a109 = 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 + %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 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = 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 + %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 + %a152 = 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 + %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 + %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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() + store { ptr, i64, i64 } %t2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + %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: + %t12 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t12, ptr %a13 + call void @finch_str_copy(ptr %a14, ptr %a13) + %t15 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t15, ptr %a8 + br label %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: + %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 + %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: + %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 + %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: + %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 + %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 + %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 +} + +define internal i1 @finch.platform.charIsSigned(%S.platform.Target %p0) { +entry: + %a1 = alloca %S.platform.Target, align 16 + store %S.platform.Target %p0, ptr %a1 + %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: + %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: + %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 ] + ret i1 %t10 +} + +define internal { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i32, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca i8, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i32 2166136261, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond9098 +each.cond9098: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body9099, label %each.end9101 +each.body9099: + %t8 = load ptr, ptr %a1 + %t9 = getelementptr inbounds i8, ptr %t8, i64 %t6 + %t10 = load i8, ptr %t9 + store i8 %t10, ptr %a11 + %t12 = load i32, ptr %a2 + %t13 = load i8, ptr %a11 + %t14 = zext i8 %t13 to i32 + %t15 = xor i32 %t12, %t14 + %t16 = mul i32 %t15, 16777619 + store i32 %t16, ptr %a2 + br label %each.step9100 +each.step9100: + %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 + store { ptr, i64, i64 } zeroinitializer, ptr %a20 + store i64 0, ptr %a21 + br label %for.cond9102 +for.cond9102: + %t22 = load i64, ptr %a21 + %t23 = icmp slt i64 %t22, 8 + br i1 %t23, label %for.body9103, label %for.end9105 +for.body9103: + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 + %t25 = load i32, ptr %a2 + %t26 = load i64, ptr %a21 + %t27 = mul i64 4, %t26 + %t28 = sub i64 28, %t27 + %t29 = trunc i64 %t28 to i32 + %t30 = lshr i32 %t25, %t29 + %t31 = and i32 %t30, 15 + %t32 = zext i32 %t31 to i64 + %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) + unreachable +inrange9107: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 + %t38 = load i8, ptr %t37 + call void @finch_str_from_char(ptr %a39, i8 signext %t38) + %t40 = load { ptr, i64, i64 }, ptr %a39 + %t41 = load i64, ptr %t24 + %t42 = add i64 %t41, 1 + call void @finch_arr_reserve(ptr %a20, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t43 = load ptr, ptr %a20 + %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: + %t45 = load i64, ptr %a21 + %t46 = add i64 %t45, 1 + store i64 %t46, ptr %a21 + br label %for.cond9102 +for.end9105: + %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 + call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) + %t50 = load { ptr, i64, i64 }, ptr %a49 + 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 } +} + +define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.platform.Target, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca 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 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + 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 + %t7 = call i32 @finch_str_ends(ptr %a4, ptr %a6) + %t8 = icmp ne i32 %t7, 0 + br i1 %t8, label %then9114, label %endif9116 +then9114: + %t9 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t9, ptr %a10 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = sub i64 %t13, 10 + call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.6283, i64 42) + %t15 = load { ptr, i64, i64 }, ptr %a11 + %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) + store { ptr, i64, i64 } { ptr @.str.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 + 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 } %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 +} + +define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca i64, align 16 + %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 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6294, i64 1, i64 0 }, ptr %a10 + %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) + store i64 %t11, ptr %a12 + br label %while.cond9134 +while.cond9134: + %t13 = load i64, ptr %a12 + %t14 = icmp sge i64 %t13, 0 + br i1 %t14, label %while.body9135, label %while.end9136 +while.body9135: + %t15 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t15, ptr %a16 + %t18 = load i64, ptr %a12 + %t19 = add i64 %t18, 1 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t21 = load i64, ptr %t20 + call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.6295, i64 63) + %t22 = load { ptr, i64, i64 }, ptr %a17 + store { ptr, i64, i64 } %t22, ptr %a6 + %t23 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t23, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.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) + 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) + 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) + 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 +} + +define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a11 = alloca i64, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t3 = load i64, ptr %t2 + %t4 = icmp sgt i64 %t3, 0 + br label %logic.from9161 +logic.from9161: + br i1 %t4, label %logic.rhs9162, label %logic.end9163 +logic.rhs9162: + %t5 = getelementptr inbounds %S.linker.Names, ptr %self, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a8 + %t9 = load i64, ptr %t6 + %t10 = load ptr, ptr %t5 + store i64 0, ptr %a11 + br label %find.cond9164 +find.cond9164: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t9 + br i1 %t13, label %find.body9165, label %find.end9168 +find.body9165: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } %t7, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %find.hit9166, label %find.next9167 +find.hit9166: + store i64 %t12, ptr %a8 + br label %find.end9168 +find.next9167: + %t20 = add i64 %t12, 1 + store i64 %t20, ptr %a11 + br label %find.cond9164 +find.end9168: + %t21 = load i64, ptr %a8 + %t22 = icmp sge i64 %t21, 0 + %t23 = xor i1 %t22, true + br label %logic.rend9169 +logic.rend9169: + br label %logic.end9163 +logic.end9163: + %t24 = phi i1 [ false, %logic.from9161 ], [ %t23, %logic.rend9169 ] + br i1 %t24, label %then9170, label %endif9172 +then9170: + %t25 = getelementptr inbounds %S.linker.Names, ptr %self, i32 0, i32 0 + %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 + %t27 = load { ptr, i64, i64 }, ptr %a1 + 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 i64, ptr %t26 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %t25 + %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: + ret void +} + +define internal { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %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 + %a50 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + %t7 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t7, ptr %a8 + %t9 = call i64 @finch_str_find(ptr %a5, ptr %a8) + 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: + %t13 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t13, ptr %a14 + %t16 = load i64, ptr %a10 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %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) + %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: + %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: + %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) + unreachable +inrange9183: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 + %t38 = load i8, ptr %t37 + call void @finch_str_from_char(ptr %a39, i8 signext %t38) + %t40 = load { ptr, i64, i64 }, ptr %a39 + 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 +} + +define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.cimport.CImports, align 16 + %a3 = alloca %S.platform.Target, align 16 + %a4 = alloca %S.linker.Names, align 16 + %a5 = alloca %S.linker.Names, 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 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca 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 + %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 + %a37 = 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 + %a52 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %a127 = 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 + %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 + %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 + %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 + %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 + %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 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 + %a329 = 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 + %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 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = 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 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.cimport.CImports %p1, ptr %a2 + store %S.platform.Target %p2, ptr %a3 + store %S.linker.Names zeroinitializer, ptr %a4 + 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 + 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: + %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: + %t18 = load ptr, ptr %a12 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 + %t20 = load { ptr, i64, i64 }, ptr %t19 + store { ptr, i64, i64 } %t20, ptr %a21 + %t22 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_trim(ptr %a24, ptr %a23) + %t25 = load { ptr, i64, i64 }, ptr %a24 + 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 + %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) + %t32 = icmp sge i64 %t31, 0 + br i1 %t32, label %then9189, label %else9190 +then9189: + %t33 = load { ptr, i64, i64 }, ptr %a26 + %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6315, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6316, i64 1, i64 0 }) + call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) + br label %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 } %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: + %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: + %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 + %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: + %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 + 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 + 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) + 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) + 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 + %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) + 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) + 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) + 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) + 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 + 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) + 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) + 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: + ret i64 1 +} + +define internal { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %p0, %S.platform.Target %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.platform.Target, align 16 + %a3 = 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 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a48 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a136 = 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 + %a147 = 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 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = 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 + %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 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.platform.Target %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + store { ptr, i64, i64 } zeroinitializer, ptr %a6 + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + %t8 = call i32 @finch_try_read_file(ptr %a6, ptr %a5, ptr %a7) + %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: + %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: + store { ptr, i64, i64 } %t11, ptr %a13 + %t14 = call { ptr, i64, i64 } @finch.linker.cacheDir() + store { ptr, i64, i64 } %t14, ptr %a15 + %t16 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.6408, i64 4, i64 0 }, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a17 + %t21 = load { ptr, i64, i64 }, ptr %a13 + %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 + %t27 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 + %t28 = load { ptr, i64, i64 }, ptr %t27 + 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 } %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 + %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 +} + +define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { +entry: + %a1 = alloca %S.linker.Build, align 16 + %a2 = alloca %S.platform.Target, align 16 + %a3 = alloca %S.cimport.CImports, align 16 + %a8 = 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 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = 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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %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 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca 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 + %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 + %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 + %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 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = 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 + %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 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = 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 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 + %a313 = 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 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a322 = 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 + %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 + %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 + %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 + %a362 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %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 + %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 + %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 + %a427 = 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 + %a438 = 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 + %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 + %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 + %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 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a502 = 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 + %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 + %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 + %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 + %t5 = icmp eq ptr %t4, null + %t6 = select i1 %t5, ptr @.str.6430, ptr %t4 + %t7 = call ptr @getenv(ptr %t6) + store { ptr, i64, i64 } zeroinitializer, ptr %a8 + call void @finch_str_from_c(ptr %a8, ptr %t7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t9, ptr %a10 + call void @finch_str_copy(ptr %a11, ptr %a10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t12, ptr %a13 + %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: + %t17 = load { ptr, i64, i64 }, 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) + 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 + %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 + 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) + 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 } %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) + 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) + %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 + 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 + 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 + 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) + %t391 = load { ptr, i64, i64 }, ptr %a388 + 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) + 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 + store { ptr, i64, i64 } %t441, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.6489, i64 2, i64 0 }, ptr %a444 + %t445 = call i32 @finch_str_ends(ptr %a442, ptr %a444) + %t446 = icmp ne i32 %t445, 0 + br label %logic.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 + 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 + 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 + %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) + 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: + ret i64 0 +} + +define internal i64 @finch.lsp.hexval(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 48 + br label %logic.from9374 +logic.from9374: + br i1 %t3, label %logic.rhs9375, label %logic.end9376 +logic.rhs9375: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 57 + br label %logic.rend9377 +logic.rend9377: + br label %logic.end9376 +logic.end9376: + %t6 = phi i1 [ false, %logic.from9374 ], [ %t5, %logic.rend9377 ] + br i1 %t6, label %then9378, label %endif9380 +then9378: + %t7 = load i8, ptr %a1 + %t8 = zext i8 %t7 to i64 + %t9 = zext i8 48 to i64 + %t10 = sub i64 %t8, %t9 + ret i64 %t10 +endif9380: + %t11 = load i8, ptr %a1 + %t12 = icmp uge i8 %t11, 97 + br label %logic.from9381 +logic.from9381: + br i1 %t12, label %logic.rhs9382, label %logic.end9383 +logic.rhs9382: + %t13 = load i8, ptr %a1 + %t14 = icmp ule i8 %t13, 102 + br label %logic.rend9384 +logic.rend9384: + br label %logic.end9383 +logic.end9383: + %t15 = phi i1 [ false, %logic.from9381 ], [ %t14, %logic.rend9384 ] + br i1 %t15, label %then9385, label %endif9387 +then9385: + %t16 = load i8, ptr %a1 + %t17 = zext i8 %t16 to i64 + %t18 = zext i8 97 to i64 + %t19 = sub i64 %t17, %t18 + %t20 = add i64 %t19, 10 + ret i64 %t20 +endif9387: + %t21 = load i8, ptr %a1 + %t22 = icmp uge i8 %t21, 65 + br label %logic.from9388 +logic.from9388: + br i1 %t22, label %logic.rhs9389, label %logic.end9390 +logic.rhs9389: + %t23 = load i8, ptr %a1 + %t24 = icmp ule i8 %t23, 70 + br label %logic.rend9391 +logic.rend9391: + br label %logic.end9390 +logic.end9390: + %t25 = phi i1 [ false, %logic.from9388 ], [ %t24, %logic.rend9391 ] + br i1 %t25, label %then9392, label %endif9394 +then9392: + %t26 = load i8, ptr %a1 + %t27 = zext i8 %t26 to i64 + %t28 = zext i8 65 to i64 + %t29 = sub i64 %t27, %t28 + %t30 = add i64 %t29, 10 + ret i64 %t30 +endif9394: + ret i64 -1 +} + +define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6507, i64 7, i64 0 }, ptr %a10 + %t11 = call i32 @finch_str_starts(ptr %a8, ptr %a10) + %t12 = icmp ne i32 %t11, 0 + br i1 %t12, label %then9395, label %endif9397 +then9395: + %t13 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t13, ptr %a14 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t17 = load i64, ptr %t16 + call void @finch_str_sub(ptr %a15, ptr %a14, i64 7, i64 %t17, ptr @.str.6508, i64 114) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t18, ptr %a6 + br label %endif9397 +endif9397: + store { ptr, i64, i64 } zeroinitializer, ptr %a19 + store i64 0, ptr %a20 + br label %while.cond9398 +while.cond9398: + %t21 = load i64, ptr %a20 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp slt i64 %t21, %t23 + br i1 %t24, label %while.body9399, label %while.end9400 +while.body9399: + %t25 = load i64, ptr %a20 + %t26 = load { ptr, i64, i64 }, ptr %a6 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range9401, label %inrange9402 +range9401: + call void @finch_panic_index(ptr @.str.6509, i64 119, i64 %t25, i64 %t27) + unreachable +inrange9402: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds i8, ptr %t29, i64 %t25 + %t31 = load i8, ptr %t30 + %t32 = icmp eq i8 %t31, 37 + br label %logic.from9403 +logic.from9403: + br i1 %t32, label %logic.rhs9404, label %logic.end9405 +logic.rhs9404: + %t33 = load i64, ptr %a20 + %t34 = add i64 %t33, 2 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t36, 0 + %t38 = icmp slt i64 %t34, %t37 + br label %logic.rend9406 +logic.rend9406: + br label %logic.end9405 +logic.end9405: + %t39 = phi i1 [ false, %logic.from9403 ], [ %t38, %logic.rend9406 ] + br label %logic.from9407 +logic.from9407: + br i1 %t39, label %logic.rhs9408, label %logic.end9409 +logic.rhs9408: + %t40 = load i64, ptr %a20 + %t41 = add i64 %t40, 1 + %t42 = load { ptr, i64, i64 }, ptr %a6 + %t43 = extractvalue { ptr, i64, i64 } %t42, 1 + %t44 = icmp uge i64 %t41, %t43 + br i1 %t44, label %range9410, label %inrange9411 +range9410: + call void @finch_panic_index(ptr @.str.6510, i64 119, i64 %t41, i64 %t43) + unreachable +inrange9411: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds i8, ptr %t45, i64 %t41 + %t47 = load i8, ptr %t46 + %t48 = call i64 @finch.lsp.hexval(i8 %t47) + %t49 = icmp sge i64 %t48, 0 + br label %logic.rend9412 +logic.rend9412: + br label %logic.end9409 +logic.end9409: + %t50 = phi i1 [ false, %logic.from9407 ], [ %t49, %logic.rend9412 ] + br label %logic.from9413 +logic.from9413: + br i1 %t50, label %logic.rhs9414, label %logic.end9415 +logic.rhs9414: + %t51 = load i64, ptr %a20 + %t52 = add i64 %t51, 2 + %t53 = load { ptr, i64, i64 }, ptr %a6 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range9416, label %inrange9417 +range9416: + call void @finch_panic_index(ptr @.str.6511, i64 119, i64 %t52, i64 %t54) + unreachable +inrange9417: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds i8, ptr %t56, i64 %t52 + %t58 = load i8, ptr %t57 + %t59 = call i64 @finch.lsp.hexval(i8 %t58) + %t60 = icmp sge i64 %t59, 0 + br label %logic.rend9418 +logic.rend9418: + br label %logic.end9415 +logic.end9415: + %t61 = phi i1 [ false, %logic.from9413 ], [ %t60, %logic.rend9418 ] + br i1 %t61, label %then9419, label %else9420 +then9419: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t63 = load i64, ptr %a20 + %t64 = add i64 %t63, 1 + %t65 = load { ptr, i64, i64 }, ptr %a6 + %t66 = extractvalue { ptr, i64, i64 } %t65, 1 + %t67 = icmp uge i64 %t64, %t66 + br i1 %t67, label %range9422, label %inrange9423 +range9422: + call void @finch_panic_index(ptr @.str.6512, i64 120, i64 %t64, i64 %t66) + unreachable +inrange9423: + %t68 = extractvalue { ptr, i64, i64 } %t65, 0 + %t69 = getelementptr inbounds i8, ptr %t68, i64 %t64 + %t70 = load i8, ptr %t69 + %t71 = call i64 @finch.lsp.hexval(i8 %t70) + %t72 = mul i64 %t71, 16 + %t73 = load i64, ptr %a20 + %t74 = add i64 %t73, 2 + %t75 = load { ptr, i64, i64 }, ptr %a6 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 %t74, %t76 + br i1 %t77, label %range9424, label %inrange9425 +range9424: + call void @finch_panic_index(ptr @.str.6513, i64 120, i64 %t74, i64 %t76) + unreachable +inrange9425: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds i8, ptr %t78, i64 %t74 + %t80 = load i8, ptr %t79 + %t81 = call i64 @finch.lsp.hexval(i8 %t80) + %t82 = add i64 %t72, %t81 + %t83 = trunc i64 %t82 to i8 + %t84 = load i64, ptr %t62 + %t85 = add i64 %t84, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t85, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t86 = load ptr, ptr %a19 + %t87 = getelementptr inbounds i8, ptr %t86, i64 %t84 + store i8 %t83, ptr %t87 + store i64 %t85, ptr %t62 + %t88 = load i64, ptr %a20 + %t89 = add i64 %t88, 3 + store i64 %t89, ptr %a20 + br label %endif9421 +else9420: + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t91 = load i64, ptr %a20 + %t92 = load { ptr, i64, i64 }, ptr %a6 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range9426, label %inrange9427 +range9426: + call void @finch_panic_index(ptr @.str.6514, i64 123, i64 %t91, i64 %t93) + unreachable +inrange9427: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds i8, ptr %t95, i64 %t91 + %t97 = load i8, ptr %t96 + %t98 = load i64, ptr %t90 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t99, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %a19 + %t101 = getelementptr inbounds i8, ptr %t100, i64 %t98 + store i8 %t97, ptr %t101 + store i64 %t99, ptr %t90 + %t102 = load i64, ptr %a20 + %t103 = add i64 %t102, 1 + store i64 %t103, ptr %a20 + br label %endif9421 +endif9421: + br label %while.cond9398 +while.end9400: + %t104 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } zeroinitializer, ptr %a105 + store { ptr, i64, i64 } %t104, ptr %a106 + call void @finch_str_from_bytes(ptr %a105, ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a105 + ret { ptr, i64, i64 } %t107 +} + +define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca i8, align 16 + %a21 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }, ptr %a2 + %t3 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t4 = call ptr @finch_alloc(i64 %t3) + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 + store { ptr, i64, i64 } { ptr @.str.6516, i64 7, i64 0 }, ptr %t5 + %t6 = insertvalue { ptr, i64, i64 } undef, ptr %t4, 0 + %t7 = insertvalue { ptr, i64, i64 } %t6, i64 1, 1 + %t8 = insertvalue { ptr, i64, i64 } %t7, i64 1, 2 + store { ptr, i64, i64 } %t8, ptr %a9 + store i64 0, ptr %a10 + br label %each.cond9428 +each.cond9428: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body9429, label %each.end9431 +each.body9429: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds i8, ptr %t15, i64 %t13 + %t17 = load i8, ptr %t16 + store i8 %t17, ptr %a18 + %t19 = load i8, ptr %a18 + %t20 = zext i8 %t19 to i64 + store i64 %t20, ptr %a21 + %t22 = load i8, ptr %a18 + %t23 = icmp uge i8 %t22, 97 + br label %logic.from9432 +logic.from9432: + br i1 %t23, label %logic.rhs9433, label %logic.end9434 +logic.rhs9433: + %t24 = load i8, ptr %a18 + %t25 = icmp ule i8 %t24, 122 + br label %logic.rend9435 +logic.rend9435: + br label %logic.end9434 +logic.end9434: + %t26 = phi i1 [ false, %logic.from9432 ], [ %t25, %logic.rend9435 ] + br label %logic.from9436 +logic.from9436: + br i1 %t26, label %logic.end9438, label %logic.rhs9437 +logic.rhs9437: + %t27 = load i8, ptr %a18 + %t28 = icmp uge i8 %t27, 65 + br label %logic.from9439 +logic.from9439: + br i1 %t28, label %logic.rhs9440, label %logic.end9441 +logic.rhs9440: + %t29 = load i8, ptr %a18 + %t30 = icmp ule i8 %t29, 90 + br label %logic.rend9442 +logic.rend9442: + br label %logic.end9441 +logic.end9441: + %t31 = phi i1 [ false, %logic.from9439 ], [ %t30, %logic.rend9442 ] + br label %logic.rend9443 +logic.rend9443: + br label %logic.end9438 +logic.end9438: + %t32 = phi i1 [ true, %logic.from9436 ], [ %t31, %logic.rend9443 ] + br label %logic.from9444 +logic.from9444: + br i1 %t32, label %logic.end9446, label %logic.rhs9445 +logic.rhs9445: + %t33 = load i8, ptr %a18 + %t34 = icmp uge i8 %t33, 48 + br label %logic.from9447 +logic.from9447: + br i1 %t34, label %logic.rhs9448, label %logic.end9449 +logic.rhs9448: + %t35 = load i8, ptr %a18 + %t36 = icmp ule i8 %t35, 57 + br label %logic.rend9450 +logic.rend9450: + br label %logic.end9449 +logic.end9449: + %t37 = phi i1 [ false, %logic.from9447 ], [ %t36, %logic.rend9450 ] + br label %logic.rend9451 +logic.rend9451: + br label %logic.end9446 +logic.end9446: + %t38 = phi i1 [ true, %logic.from9444 ], [ %t37, %logic.rend9451 ] + br label %logic.from9452 +logic.from9452: + br i1 %t38, label %logic.end9454, label %logic.rhs9453 +logic.rhs9453: + store { ptr, i64, i64 } { ptr @.str.6517, i64 5, i64 0 }, ptr %a39 + %t41 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a42, i8 signext %t41) + %t43 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = call i64 @finch_str_find(ptr %a39, ptr %a44) + %t46 = icmp sge i64 %t45, 0 + br label %logic.rend9455 +logic.rend9455: + br label %logic.end9454 +logic.end9454: + %t47 = phi i1 [ true, %logic.from9452 ], [ %t46, %logic.rend9455 ] + br i1 %t47, label %then9456, label %else9457 +then9456: + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t49 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a50, i8 signext %t49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + %t52 = load i64, ptr %t48 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a9 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t48 + br label %endif9458 +else9457: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t57 = load i64, ptr %a21 + %t58 = sdiv i64 %t57, 16 + %t59 = srem i64 %t58, 16 + %t60 = load { ptr, i64, i64 }, ptr %a2 + %t61 = extractvalue { ptr, i64, i64 } %t60, 1 + %t62 = icmp uge i64 %t59, %t61 + br i1 %t62, label %range9459, label %inrange9460 +range9459: + call void @finch_panic_index(ptr @.str.6520, i64 138, i64 %t59, i64 %t61) + unreachable +inrange9460: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds i8, ptr %t63, i64 %t59 + %t65 = load i8, ptr %t64 + call void @finch_str_from_char(ptr %a66, i8 signext %t65) + %t67 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.6519, i64 1, i64 0 }, ptr %a69 + store { ptr, i64, i64 } %t67, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a68 + %t72 = load i64, ptr %a21 + %t73 = srem i64 %t72, 16 + %t74 = load { ptr, i64, i64 }, ptr %a2 + %t75 = extractvalue { ptr, i64, i64 } %t74, 1 + %t76 = icmp uge i64 %t73, %t75 + br i1 %t76, label %range9461, label %inrange9462 +range9461: + call void @finch_panic_index(ptr @.str.6521, i64 138, i64 %t73, i64 %t75) + unreachable +inrange9462: + %t77 = extractvalue { ptr, i64, i64 } %t74, 0 + %t78 = getelementptr inbounds i8, ptr %t77, i64 %t73 + %t79 = load i8, ptr %t78 + call void @finch_str_from_char(ptr %a80, i8 signext %t79) + %t81 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t71, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a82 + %t86 = load i64, ptr %t56 + %t87 = add i64 %t86, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t87, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t88 = load ptr, ptr %a9 + %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i64 %t86 + store { ptr, i64, i64 } %t85, ptr %t89 + store i64 %t87, ptr %t56 + br label %endif9458 +endif9458: + br label %each.step9430 +each.step9430: + %t90 = load i64, ptr %a10 + %t91 = add i64 %t90, 1 + store i64 %t91, ptr %a10 + br label %each.cond9428 +each.end9431: + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6522, i64 0, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %a9, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + ret { ptr, i64, i64 } %t95 +} + +define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + store i64 0, ptr %a3 + br label %while.cond9463 +while.cond9463: + %t4 = load i64, ptr %a3 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = icmp slt i64 %t4, %t6 + br i1 %t7, label %while.body9464, label %while.end9465 +while.body9464: + %t8 = load i64, ptr %a3 + %t9 = load { ptr, i64, i64 }, ptr %a1 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range9466, label %inrange9467 +range9466: + call void @finch_panic_index(ptr @.str.6523, i64 149, i64 %t8, i64 %t10) + unreachable +inrange9467: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds i8, ptr %t12, i64 %t8 + %t14 = load i8, ptr %t13 + %t15 = icmp eq i8 %t14, 92 + br label %logic.from9468 +logic.from9468: + br i1 %t15, label %logic.rhs9469, label %logic.end9470 +logic.rhs9469: + %t16 = load i64, ptr %a3 + %t17 = add i64 %t16, 1 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t19 = load i64, ptr %t18 + %t20 = icmp slt i64 %t17, %t19 + br label %logic.rend9471 +logic.rend9471: + br label %logic.end9470 +logic.end9470: + %t21 = phi i1 [ false, %logic.from9468 ], [ %t20, %logic.rend9471 ] + br i1 %t21, label %then9472, label %else9473 +then9472: + %t22 = load i64, ptr %a3 + %t23 = add i64 %t22, 1 + %t24 = load { ptr, i64, i64 }, ptr %a1 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 %t23, %t25 + br i1 %t26, label %range9475, label %inrange9476 +range9475: + call void @finch_panic_index(ptr @.str.6524, i64 150, i64 %t23, i64 %t25) + unreachable +inrange9476: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 + %t29 = load i8, ptr %t28 + %t30 = icmp eq i8 %t29, 110 + br i1 %t30, label %then9477, label %else9478 +then9477: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = add i64 %t32, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t33, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t34 = load ptr, ptr %a2 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i64 %t32 + store { ptr, i64, i64 } { ptr @.str.6525, i64 1, i64 0 }, ptr %t35 + store i64 %t33, ptr %t31 + br label %endif9479 +else9478: + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t37 = load i64, ptr %a3 + %t38 = add i64 %t37, 1 + %t39 = load { ptr, i64, i64 }, ptr %a1 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range9480, label %inrange9481 +range9480: + call void @finch_panic_index(ptr @.str.6526, i64 153, i64 %t38, i64 %t40) + unreachable +inrange9481: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + call void @finch_str_from_char(ptr %a45, i8 signext %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load i64, ptr %t36 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a2 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t36 + br label %endif9479 +endif9479: + %t51 = load i64, ptr %a3 + %t52 = add i64 %t51, 2 + store i64 %t52, ptr %a3 + br label %endif9474 +else9473: + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t54 = load i64, ptr %a3 + %t55 = load { ptr, i64, i64 }, ptr %a1 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range9482, label %inrange9483 +range9482: + call void @finch_panic_index(ptr @.str.6527, i64 157, i64 %t54, i64 %t56) + unreachable +inrange9483: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 + %t60 = load i8, ptr %t59 + call void @finch_str_from_char(ptr %a61, i8 signext %t60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = load i64, ptr %t53 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %a2 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } %t62, ptr %t66 + store i64 %t64, ptr %t53 + %t67 = load i64, ptr %a3 + %t68 = add i64 %t67, 1 + store i64 %t68, ptr %a3 + br label %endif9474 +endif9474: + br label %while.cond9463 +while.end9465: + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6528, i64 0, i64 0 }, ptr %a70 + call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) + %t72 = load { ptr, i64, i64 }, ptr %a71 + ret { ptr, i64, i64 } %t72 +} + +define internal { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %p0, i64 %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6530, i64 1, i64 0 }, ptr %a6 + call void @finch_str_split(ptr %a7, ptr %a4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load i64, ptr %a2 + %t11 = icmp sge i64 %t10, 1 + br label %logic.from9484 +logic.from9484: + br i1 %t11, label %logic.rhs9485, label %logic.end9486 +logic.rhs9485: + %t12 = load i64, ptr %a2 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sle i64 %t12, %t14 + br label %logic.rend9487 +logic.rend9487: + br label %logic.end9486 +logic.end9486: + %t16 = phi i1 [ false, %logic.from9484 ], [ %t15, %logic.rend9487 ] + br i1 %t16, label %then9488, label %endif9490 +then9488: + %t17 = load i64, ptr %a2 + %t18 = sub i64 %t17, 1 + %t19 = load { ptr, i64, i64 }, ptr %a9 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range9491, label %inrange9492 +range9491: + call void @finch_panic_index(ptr @.str.6531, i64 167, i64 %t18, i64 %t20) + unreachable +inrange9492: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + ret { ptr, i64, i64 } %t27 +endif9490: + ret { ptr, i64, i64 } { ptr @.str.6532, i64 0, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.lsp.readLine() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i32, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + br label %while.cond9493 +while.cond9493: + br label %while.body9494 +while.body9494: + %t2 = call i32 @getchar() + store i32 %t2, ptr %a3 + %t4 = load i32, ptr %a3 + %t5 = icmp slt i32 %t4, 0 + br i1 %t5, label %then9496, label %endif9498 +then9496: + ret { ptr, i64, i64 } { ptr @.str.6533, i64 0, i64 0 } +endif9498: + %t6 = load i32, ptr %a3 + %t7 = icmp eq i32 %t6, 10 + br i1 %t7, label %then9499, label %endif9501 +then9499: + br label %while.end9495 +endif9501: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t9 = load i32, ptr %a3 + %t10 = trunc i32 %t9 to i8 + %t11 = load i64, ptr %t8 + %t12 = add i64 %t11, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t12, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t13 = load ptr, ptr %a1 + %t14 = getelementptr inbounds i8, ptr %t13, i64 %t11 + store i8 %t10, ptr %t14 + store i64 %t12, ptr %t8 + br label %while.cond9493 +while.end9495: + %t15 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a16 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_from_bytes(ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.6535, i64 1, i64 0 }, ptr %a23 + %t24 = call i32 @finch_str_ends(ptr %a21, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + br i1 %t25, label %then9502, label %endif9504 +then9502: + %t26 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t26, ptr %a27 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = sub i64 %t30, 1 + call void @finch_str_sub(ptr %a28, ptr %a27, i64 0, i64 %t31, ptr @.str.6536, i64 188) + %t32 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t32, ptr %a19 + br label %endif9504 +endif9504: + %t33 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_copy(ptr %a35, ptr %a34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + ret { ptr, i64, i64 } %t36 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { +entry: + %a1 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca i64, align 16 + %a43 = alloca i32, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + store i64 0, ptr %a1 + br label %while.cond9505 +while.cond9505: + br label %while.body9506 +while.body9506: + %t2 = call { ptr, i64, i64 } @finch.lsp.readLine() + store { ptr, i64, i64 } %t2, ptr %a3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = icmp eq i64 %t5, 0 + br i1 %t6, label %then9508, label %endif9510 +then9508: + %t7 = load i64, ptr %a1 + %t8 = icmp sgt i64 %t7, 0 + br i1 %t8, label %then9511, label %endif9513 +then9511: + br label %while.end9507 +endif9513: + %t9 = load ptr, ptr @stdin + %t10 = call i32 @feof(ptr %t9) + %t11 = icmp ne i32 %t10, 0 + br i1 %t11, label %then9514, label %endif9516 +then9514: + %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6537, i64 32, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 +endif9516: + br label %while.cond9505 +endif9510: + %t13 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6539, i64 15, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_starts(ptr %a14, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br i1 %t18, label %then9517, label %endif9519 +then9517: + %t19 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t23 = load i64, ptr %t22 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 15, i64 %t23, ptr @.str.6540, i64 208) + %t24 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_trim(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } zeroinitializer, ptr %a28 + store i64 0, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + %t31 = call i32 @finch_str_try_int(ptr %a30, ptr %a29, ptr %a28) + %t32 = icmp eq i32 %t31, 0 + %t33 = load { ptr, i64, i64 }, ptr %a28 + %t34 = load i64, ptr %a29 + br i1 %t32, label %or.failed9520, label %or.ok9521 +or.failed9520: + store { ptr, i64, i64 } %t33, ptr %a35 + br label %or.bend9522 +or.bend9522: + br label %or.end9523 +or.ok9521: + br label %or.end9523 +or.end9523: + %t36 = phi i64 [ 0, %or.bend9522 ], [ %t34, %or.ok9521 ] + store i64 %t36, ptr %a1 + br label %endif9519 +endif9519: + br label %while.cond9505 +while.end9507: + store { ptr, i64, i64 } zeroinitializer, ptr %a37 + %t38 = load i64, ptr %a1 + store i64 0, ptr %a39 + br label %for.cond9524 +for.cond9524: + %t40 = load i64, ptr %a39 + %t41 = icmp slt i64 %t40, %t38 + br i1 %t41, label %for.body9525, label %for.end9527 +for.body9525: + %t42 = call i32 @getchar() + store i32 %t42, ptr %a43 + %t44 = load i32, ptr %a43 + %t45 = icmp slt i32 %t44, 0 + br i1 %t45, label %then9528, label %endif9530 +then9528: + %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6542, i64 25, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 +endif9530: + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a37, i32 0, i32 1 + %t48 = load i32, ptr %a43 + %t49 = trunc i32 %t48 to i8 + %t50 = load i64, ptr %t47 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %a37, i64 %t51, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %a37 + %t53 = getelementptr inbounds i8, ptr %t52, i64 %t50 + store i8 %t49, ptr %t53 + store i64 %t51, ptr %t47 + br label %for.step9526 +for.step9526: + %t54 = load i64, ptr %a39 + %t55 = add i64 %t54, 1 + store i64 %t55, ptr %a39 + br label %for.cond9524 +for.end9527: + %t56 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } zeroinitializer, ptr %a57 + store { ptr, i64, i64 } %t56, ptr %a58 + call void @finch_str_from_bytes(ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a57 + %t60 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t59) + %t61 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 0 + %t62 = xor i1 %t61, true + %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 2 + %t64 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 1 + br i1 %t62, label %try.failed9531, label %try.ok9532 +try.failed9531: + %t65 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t63, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t65 +try.ok9532: + %t66 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t67 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t66, %S.json.Json %t64, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t67 +} + +define internal void @finch.lsp.send(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = load %S.json.Json, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) + store { ptr, i64, i64 } %t3, ptr %a4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t6 = load i64, ptr %t5 + call void @finch_str_from_int(ptr %a7, i64 %t6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.6543, i64 16, i64 0 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6544, i64 4, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t16, ptr %a17 + %t18 = load { ptr, i64, i64 }, ptr %a17 + %t19 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t18, ptr %a21 + store { ptr, i64, i64 } %t19, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t23, ptr %a24 + %t25 = load { ptr, i64, i64 }, ptr %a24 + %t26 = extractvalue { ptr, i64, i64 } %t25, 0 + %t27 = icmp eq ptr %t26, null + %t28 = select i1 %t27, ptr @.str.6545, ptr %t26 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a24, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = load ptr, ptr @stdout + %t32 = call i64 @fwrite(ptr %t28, i64 1, i64 %t30, ptr %t31) + %t33 = load ptr, ptr @stdout + %t34 = call i32 @fflush(ptr %t33) + ret void +} + +define internal void @finch.lsp.reply(%S.json.Json %p0, %S.json.Json %p1) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Json, align 16 + %a4 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6547, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6546, i64 7, i64 0 }, %S.json.Json %t5) + %t6 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6548, i64 2, i64 0 }, %S.json.Json %t6) + %t7 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6549, i64 6, i64 0 }, %S.json.Json %t7) + %t8 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t8) + ret void +} + +define internal void @finch.lsp.notify({ ptr, i64, i64 } %p0, %S.json.Json %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.json.Json, align 16 + %a4 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6551, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6550, i64 7, i64 0 }, %S.json.Json %t5) + %t6 = load { ptr, i64, i64 }, ptr %a1 + %t7 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t6) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6552, i64 6, i64 0 }, %S.json.Json %t7) + %t8 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6553, i64 6, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t9) + ret void +} + +define internal %S.json.Json @finch.lsp.num(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + store i64 %p0, ptr %a1 + %t2 = load i64, ptr %a1 + %t3 = sitofp i64 %t2 to double + %t4 = call %S.json.Json @finch.json.new_number(double %t3) + ret %S.json.Json %t4 +} + +define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9533 +n.cond9533: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9534, label %n.end9535 +n.body9534: + %t8 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.json.Json, ptr %t2, i64 %t6 + call void @finch.copy.S_json_Json(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9533 +n.end9535: + ret void +} + +define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.json.Json, ptr %src + store %S.json.Json %t1, ptr %dst + %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 + %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 + %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t6, ptr %t7) + ret void +} + +define internal %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca i64, align 16 + %a4 = alloca %S.json.Json, align 16 + %a10 = alloca %S.json.Json, align 16 + %a11 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + store i64 %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = load i64, ptr %a1 + %t6 = call %S.json.Json @finch.lsp.num(i64 %t5) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6554, i64 4, i64 0 }, %S.json.Json %t6) + %t7 = load i64, ptr %a2 + %t8 = call %S.json.Json @finch.lsp.num(i64 %t7) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6555, i64 9, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + store %S.json.Json %t9, ptr %a10 + call void @finch.copy.S_json_Json(ptr %a11, ptr %a10) + %t12 = load %S.json.Json, ptr %a11 + ret %S.json.Json %t12 +} + +define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a5 = alloca %S.json.Json, align 16 + %a13 = alloca %S.json.Json, align 16 + %a14 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + store i64 %p1, ptr %a2 + store i64 %p2, ptr %a3 + %t4 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t4, ptr %a5 + %t6 = load i64, ptr %a1 + %t7 = load i64, ptr %a2 + %t8 = call %S.json.Json @finch.lsp.position(i64 %t6, i64 %t7) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6556, i64 5, i64 0 }, %S.json.Json %t8) + %t9 = load i64, ptr %a1 + %t10 = load i64, ptr %a3 + %t11 = call %S.json.Json @finch.lsp.position(i64 %t9, i64 %t10) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6557, i64 3, i64 0 }, %S.json.Json %t11) + %t12 = load %S.json.Json, ptr %a5 + store %S.json.Json %t12, ptr %a13 + call void @finch.copy.S_json_Json(ptr %a14, ptr %a13) + %t15 = load %S.json.Json, ptr %a14 + ret %S.json.Json %t15 +} + +define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6559, i64 1, i64 0 }, ptr %a5 + call void @finch_str_split(ptr %a6, ptr %a3, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t7 +} + +define internal i64 @finch.lsp.intOf({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a3 + store i64 0, ptr %a4 + store { ptr, i64, i64 } %t2, ptr %a5 + %t6 = call i32 @finch_str_try_int(ptr %a5, ptr %a4, ptr %a3) + %t7 = icmp eq i32 %t6, 0 + %t8 = load { ptr, i64, i64 }, ptr %a3 + %t9 = load i64, ptr %a4 + br i1 %t7, label %or.failed9536, label %or.ok9537 +or.failed9536: + store { ptr, i64, i64 } %t8, ptr %a10 + br label %or.bend9538 +or.bend9538: + br label %or.end9539 +or.ok9537: + br label %or.end9539 +or.end9539: + %t11 = phi i64 [ 0, %or.bend9538 ], [ %t9, %or.ok9537 ] + ret i64 %t11 +} + +define internal %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i64, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca i64, align 16 + %a56 = alloca i64, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca i64, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6561, i64 9, i64 0 }, ptr %a5 + %t6 = call i64 @finch_str_find(ptr %a3, ptr %a5) + store i64 %t6, ptr %a7 + %t8 = load i64, ptr %a7 + %t9 = icmp slt i64 %t8, 0 + br i1 %t9, label %then9540, label %endif9542 +then9540: + ret %S.lsp.Diag zeroinitializer +endif9542: + %t10 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t10, ptr %a11 + %t13 = load i64, ptr %a7 + call void @finch_str_sub(ptr %a12, ptr %a11, i64 0, i64 %t13, ptr @.str.6562, i64 280) + %t14 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t14, ptr %a15 + %t16 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t16, ptr %a17 + %t19 = load i64, ptr %a7 + %t20 = add i64 %t19, 9 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t22 = load i64, ptr %t21 + call void @finch_str_sub(ptr %a18, ptr %a17, i64 %t20, i64 %t22, ptr @.str.6563, i64 281) + %t23 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t23, ptr %a24 + %t25 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6565, i64 1, i64 0 }, ptr %a28 + call void @finch_str_split(ptr %a29, ptr %a26, ptr %a28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t30, ptr %a31 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = icmp slt i64 %t33, 3 + br i1 %t34, label %then9543, label %endif9545 +then9543: + ret %S.lsp.Diag zeroinitializer +endif9545: + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = sub i64 %t36, 1 + %t38 = load { ptr, i64, i64 }, ptr %a31 + %t39 = extractvalue { ptr, i64, i64 } %t38, 1 + %t40 = icmp uge i64 %t37, %t39 + br i1 %t40, label %range9546, label %inrange9547 +range9546: + call void @finch_panic_index(ptr @.str.6566, i64 287, i64 %t37, i64 %t39) + unreachable +inrange9547: + %t41 = extractvalue { ptr, i64, i64 } %t38, 0 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t37 + %t43 = load { ptr, i64, i64 }, ptr %t42 + %t44 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t43) + store i64 %t44, ptr %a45 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t47 = load i64, ptr %t46 + %t48 = sub i64 %t47, 2 + %t49 = load { ptr, i64, i64 }, ptr %a31 + %t50 = extractvalue { ptr, i64, i64 } %t49, 1 + %t51 = icmp uge i64 %t48, %t50 + br i1 %t51, label %range9548, label %inrange9549 +range9548: + call void @finch_panic_index(ptr @.str.6567, i64 288, i64 %t48, i64 %t50) + unreachable +inrange9549: + %t52 = extractvalue { ptr, i64, i64 } %t49, 0 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t48 + %t54 = load { ptr, i64, i64 }, ptr %t53 + %t55 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t54) + store i64 %t55, ptr %a56 + store { ptr, i64, i64 } zeroinitializer, ptr %a57 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t59 = load i64, ptr %t58 + %t60 = sub i64 %t59, 2 + store i64 0, ptr %a61 + br label %for.cond9550 +for.cond9550: + %t62 = load i64, ptr %a61 + %t63 = icmp slt i64 %t62, %t60 + br i1 %t63, label %for.body9551, label %for.end9553 +for.body9551: + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a57, i32 0, i32 1 + %t65 = load i64, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a31 + %t67 = extractvalue { ptr, i64, i64 } %t66, 1 + %t68 = icmp uge i64 %t65, %t67 + br i1 %t68, label %range9554, label %inrange9555 +range9554: + call void @finch_panic_index(ptr @.str.6568, i64 291, i64 %t65, i64 %t67) + unreachable +inrange9555: + %t69 = extractvalue { ptr, i64, i64 } %t66, 0 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t65 + %t71 = load { ptr, i64, i64 }, ptr %t70 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_copy(ptr %a73, ptr %a72) + %t74 = load { ptr, i64, i64 }, ptr %a73 + %t75 = load i64, ptr %t64 + %t76 = add i64 %t75, 1 + call void @finch_arr_reserve(ptr %a57, i64 %t76, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t77 = load ptr, ptr %a57 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i64 %t75 + store { ptr, i64, i64 } %t74, ptr %t78 + store i64 %t76, ptr %t64 + br label %for.step9552 +for.step9552: + %t79 = load i64, ptr %a61 + %t80 = add i64 %t79, 1 + store i64 %t80, ptr %a61 + br label %for.cond9550 +for.end9553: + %t81 = insertvalue %S.lsp.Diag zeroinitializer, i1 true, 0 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %a57, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6569, i64 1, i64 0 }, ptr %a83 + call void @finch_str_join(ptr %a84, ptr %a57, ptr %a83) + %t85 = load { ptr, i64, i64 }, ptr %a84 + %t86 = insertvalue %S.lsp.Diag %t81, { ptr, i64, i64 } %t85, 1 + %t87 = load i64, ptr %a56 + %t88 = insertvalue %S.lsp.Diag %t86, i64 %t87, 2 + %t89 = load i64, ptr %a45 + %t90 = insertvalue %S.lsp.Diag %t88, i64 %t89, 3 + %t91 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t91, ptr %a92 + call void @finch_str_copy(ptr %a93, ptr %a92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + %t95 = insertvalue %S.lsp.Diag %t90, { ptr, i64, i64 } %t94, 4 + ret %S.lsp.Diag %t95 +} + +define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Ref, ptr %src + store %S.lsp.Ref %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 + %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + +define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9703 +n.cond9703: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9704, label %n.end9705 +n.body9704: + %t8 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.Ref, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_Ref(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9703 +n.end9705: + ret void +} + +define internal void @finch.copy.S_lsp_VarRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.VarRec, ptr %src + store %S.lsp.VarRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_S_lsp_VarRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.VarRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9706 +n.cond9706: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9707, label %n.end9708 +n.body9707: + %t8 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.VarRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_VarRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9706 +n.end9708: + ret void +} + +define internal void @finch.copy.S_lsp_FnRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.FnRec, ptr %src + store %S.lsp.FnRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 7 + %t11 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 7 + call void @finch_str_copy(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 8 + %t13 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 8 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + ret void +} + +define internal void @finch.copy.arr_S_lsp_FnRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.FnRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9709 +n.cond9709: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9710, label %n.end9711 +n.body9710: + %t8 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.FnRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_FnRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9709 +n.end9711: + ret void +} + +define internal void @finch.copy.S_lsp_StructRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.StructRec, ptr %src + store %S.lsp.StructRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 6 + %t11 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + ret void +} + +define internal void @finch.copy.arr_S_lsp_StructRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.StructRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9712 +n.cond9712: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9713, label %n.end9714 +n.body9713: + %t8 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.StructRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_StructRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9712 +n.end9714: + ret void +} + +define internal void @finch.copy.S_lsp_EnumRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.EnumRec, ptr %src + store %S.lsp.EnumRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_S_lsp_EnumRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.EnumRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9715 +n.cond9715: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9716, label %n.end9717 +n.body9716: + %t8 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.EnumRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_EnumRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9715 +n.end9717: + ret void +} + +define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Diag, ptr %src + store %S.lsp.Diag %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 + %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Analysis, ptr %src + store %S.lsp.Analysis %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 + call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 + %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 + %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 + %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 + call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) + ret void +} + +define internal %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.lsp.Analysis, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca i64, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a458 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca %S.lsp.Analysis, align 16 + %a539 = alloca %S.lsp.Analysis, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.lsp.Analysis zeroinitializer, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6571, i64 1, i64 0 }, ptr %a6 + call void @finch_str_split(ptr %a7, ptr %a4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + store i64 0, ptr %a10 + br label %each.cond9556 +each.cond9556: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body9557, label %each.end9559 +each.body9557: + %t15 = load ptr, ptr %a9 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + %t17 = load { ptr, i64, i64 }, ptr %t16 + store { ptr, i64, i64 } %t17, ptr %a18 + %t19 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t19, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.6573, i64 1, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_starts(ptr %a20, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br i1 %t24, label %then9560, label %else9561 +then9560: + %t25 = load { ptr, i64, i64 }, ptr %a18 + %t26 = call { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %t25) + store { ptr, i64, i64 } %t26, ptr %a27 + %t28 = load { ptr, i64, i64 }, ptr %a27 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 0, %t29 + br i1 %t30, label %range9563, label %inrange9564 +range9563: + call void @finch_panic_index(ptr @.str.6574, i64 301, i64 0, i64 %t29) + unreachable +inrange9564: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i64 0 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_copy(ptr %a35, ptr %a34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t36, ptr %a37 + %t38 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t38, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6575, i64 2, i64 0 }, ptr %a40 + %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) + %t42 = icmp ne i32 %t41, 0 + br label %logic.from9565 +logic.from9565: + br i1 %t42, label %logic.rhs9566, label %logic.end9567 +logic.rhs9566: + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = icmp sge i64 %t44, 9 + br label %logic.rend9568 +logic.rend9568: + br label %logic.end9567 +logic.end9567: + %t46 = phi i1 [ false, %logic.from9565 ], [ %t45, %logic.rend9568 ] + br i1 %t46, label %then9569, label %else9570 +then9569: + %t47 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 0 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 + %t49 = load { ptr, i64, i64 }, ptr %a27 + %t50 = extractvalue { ptr, i64, i64 } %t49, 1 + %t51 = icmp uge i64 1, %t50 + br i1 %t51, label %range9572, label %inrange9573 +range9572: + call void @finch_panic_index(ptr @.str.6576, i64 303, i64 1, i64 %t50) + unreachable +inrange9573: + %t52 = extractvalue { ptr, i64, i64 } %t49, 0 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 1 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_copy(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + %t58 = insertvalue %S.lsp.Ref zeroinitializer, { ptr, i64, i64 } %t57, 0 + %t59 = load { ptr, i64, i64 }, ptr %a27 + %t60 = extractvalue { ptr, i64, i64 } %t59, 1 + %t61 = icmp uge i64 2, %t60 + br i1 %t61, label %range9574, label %inrange9575 +range9574: + call void @finch_panic_index(ptr @.str.6577, i64 303, i64 2, i64 %t60) + unreachable +inrange9575: + %t62 = extractvalue { ptr, i64, i64 } %t59, 0 + %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 2 + %t64 = load { ptr, i64, i64 }, ptr %t63 + %t65 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t64) + %t66 = insertvalue %S.lsp.Ref %t58, i64 %t65, 1 + %t67 = load { ptr, i64, i64 }, ptr %a27 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 3, %t68 + br i1 %t69, label %range9576, label %inrange9577 +range9576: + call void @finch_panic_index(ptr @.str.6578, i64 303, i64 3, i64 %t68) + unreachable +inrange9577: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 3 + %t72 = load { ptr, i64, i64 }, ptr %t71 + %t73 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t72) + %t74 = insertvalue %S.lsp.Ref %t66, i64 %t73, 2 + %t75 = load { ptr, i64, i64 }, ptr %a27 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 4, %t76 + br i1 %t77, label %range9578, label %inrange9579 +range9578: + call void @finch_panic_index(ptr @.str.6579, i64 303, i64 4, i64 %t76) + unreachable +inrange9579: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 4 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t80) + %t82 = insertvalue %S.lsp.Ref %t74, i64 %t81, 3 + %t83 = load { ptr, i64, i64 }, ptr %a27 + %t84 = extractvalue { ptr, i64, i64 } %t83, 1 + %t85 = icmp uge i64 5, %t84 + br i1 %t85, label %range9580, label %inrange9581 +range9580: + call void @finch_panic_index(ptr @.str.6580, i64 303, i64 5, i64 %t84) + unreachable +inrange9581: + %t86 = extractvalue { ptr, i64, i64 } %t83, 0 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 5 + %t88 = load { ptr, i64, i64 }, ptr %t87 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = insertvalue %S.lsp.Ref %t82, { ptr, i64, i64 } %t91, 4 + %t93 = load { ptr, i64, i64 }, ptr %a27 + %t94 = extractvalue { ptr, i64, i64 } %t93, 1 + %t95 = icmp uge i64 6, %t94 + br i1 %t95, label %range9582, label %inrange9583 +range9582: + call void @finch_panic_index(ptr @.str.6581, i64 303, i64 6, i64 %t94) + unreachable +inrange9583: + %t96 = extractvalue { ptr, i64, i64 } %t93, 0 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 6 + %t98 = load { ptr, i64, i64 }, ptr %t97 + %t99 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t98) + %t100 = insertvalue %S.lsp.Ref %t92, i64 %t99, 5 + %t101 = load { ptr, i64, i64 }, ptr %a27 + %t102 = extractvalue { ptr, i64, i64 } %t101, 1 + %t103 = icmp uge i64 7, %t102 + br i1 %t103, label %range9584, label %inrange9585 +range9584: + call void @finch_panic_index(ptr @.str.6582, i64 303, i64 7, i64 %t102) + unreachable +inrange9585: + %t104 = extractvalue { ptr, i64, i64 } %t101, 0 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 7 + %t106 = load { ptr, i64, i64 }, ptr %t105 + %t107 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t106) + %t108 = insertvalue %S.lsp.Ref %t100, i64 %t107, 6 + %t109 = load { ptr, i64, i64 }, ptr %a27 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 8, %t110 + br i1 %t111, label %range9586, label %inrange9587 +range9586: + call void @finch_panic_index(ptr @.str.6583, i64 303, i64 8, i64 %t110) + unreachable +inrange9587: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 8 + %t114 = load { ptr, i64, i64 }, ptr %t113 + %t115 = call { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %t114) + %t116 = insertvalue %S.lsp.Ref %t108, { ptr, i64, i64 } %t115, 7 + %t117 = load i64, ptr %t48 + %t118 = add i64 %t117, 1 + call void @finch_arr_reserve(ptr %t47, i64 %t118, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) + %t119 = load ptr, ptr %t47 + %t120 = getelementptr inbounds %S.lsp.Ref, ptr %t119, i64 %t117 + store %S.lsp.Ref %t116, ptr %t120 + store i64 %t118, ptr %t48 + br label %endif9571 +else9570: + %t121 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t121, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.6584, i64 2, i64 0 }, ptr %a123 + %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) + %t125 = icmp ne i32 %t124, 0 + br label %logic.from9588 +logic.from9588: + br i1 %t125, label %logic.rhs9589, label %logic.end9590 +logic.rhs9589: + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t127 = load i64, ptr %t126 + %t128 = icmp sge i64 %t127, 9 + br label %logic.rend9591 +logic.rend9591: + br label %logic.end9590 +logic.end9590: + %t129 = phi i1 [ false, %logic.from9588 ], [ %t128, %logic.rend9591 ] + br i1 %t129, label %then9592, label %else9593 +then9592: + %t130 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 1 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 + %t132 = load { ptr, i64, i64 }, ptr %a27 + %t133 = extractvalue { ptr, i64, i64 } %t132, 1 + %t134 = icmp uge i64 1, %t133 + br i1 %t134, label %range9595, label %inrange9596 +range9595: + call void @finch_panic_index(ptr @.str.6585, i64 305, i64 1, i64 %t133) + unreachable +inrange9596: + %t135 = extractvalue { ptr, i64, i64 } %t132, 0 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 1 + %t137 = load { ptr, i64, i64 }, ptr %t136 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_copy(ptr %a139, ptr %a138) + %t140 = load { ptr, i64, i64 }, ptr %a139 + %t141 = insertvalue %S.lsp.VarRec zeroinitializer, { ptr, i64, i64 } %t140, 0 + %t142 = load { ptr, i64, i64 }, ptr %a27 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 2, %t143 + br i1 %t144, label %range9597, label %inrange9598 +range9597: + call void @finch_panic_index(ptr @.str.6586, i64 305, i64 2, i64 %t143) + unreachable +inrange9598: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 2 + %t147 = load { ptr, i64, i64 }, ptr %t146 + store { ptr, i64, i64 } %t147, ptr %a148 + call void @finch_str_copy(ptr %a149, ptr %a148) + %t150 = load { ptr, i64, i64 }, ptr %a149 + %t151 = insertvalue %S.lsp.VarRec %t141, { ptr, i64, i64 } %t150, 1 + %t152 = load { ptr, i64, i64 }, ptr %a27 + %t153 = extractvalue { ptr, i64, i64 } %t152, 1 + %t154 = icmp uge i64 3, %t153 + br i1 %t154, label %range9599, label %inrange9600 +range9599: + call void @finch_panic_index(ptr @.str.6587, i64 305, i64 3, i64 %t153) + unreachable +inrange9600: + %t155 = extractvalue { ptr, i64, i64 } %t152, 0 + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 3 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_copy(ptr %a159, ptr %a158) + %t160 = load { ptr, i64, i64 }, ptr %a159 + %t161 = insertvalue %S.lsp.VarRec %t151, { ptr, i64, i64 } %t160, 2 + %t162 = load { ptr, i64, i64 }, ptr %a27 + %t163 = extractvalue { ptr, i64, i64 } %t162, 1 + %t164 = icmp uge i64 4, %t163 + br i1 %t164, label %range9601, label %inrange9602 +range9601: + call void @finch_panic_index(ptr @.str.6588, i64 305, i64 4, i64 %t163) + unreachable +inrange9602: + %t165 = extractvalue { ptr, i64, i64 } %t162, 0 + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t165, i64 4 + %t167 = load { ptr, i64, i64 }, ptr %t166 + %t168 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t167) + %t169 = insertvalue %S.lsp.VarRec %t161, i64 %t168, 3 + %t170 = load { ptr, i64, i64 }, ptr %a27 + %t171 = extractvalue { ptr, i64, i64 } %t170, 1 + %t172 = icmp uge i64 5, %t171 + br i1 %t172, label %range9603, label %inrange9604 +range9603: + call void @finch_panic_index(ptr @.str.6589, i64 305, i64 5, i64 %t171) + unreachable +inrange9604: + %t173 = extractvalue { ptr, i64, i64 } %t170, 0 + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 5 + %t175 = load { ptr, i64, i64 }, ptr %t174 + %t176 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t175) + %t177 = insertvalue %S.lsp.VarRec %t169, i64 %t176, 4 + %t178 = load { ptr, i64, i64 }, ptr %a27 + %t179 = extractvalue { ptr, i64, i64 } %t178, 1 + %t180 = icmp uge i64 6, %t179 + br i1 %t180, label %range9605, label %inrange9606 +range9605: + call void @finch_panic_index(ptr @.str.6590, i64 305, i64 6, i64 %t179) + unreachable +inrange9606: + %t181 = extractvalue { ptr, i64, i64 } %t178, 0 + %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t181, i64 6 + %t183 = load { ptr, i64, i64 }, ptr %t182 + store { ptr, i64, i64 } %t183, ptr %a184 + call void @finch_str_copy(ptr %a185, ptr %a184) + %t186 = load { ptr, i64, i64 }, ptr %a185 + %t187 = insertvalue %S.lsp.VarRec %t177, { ptr, i64, i64 } %t186, 5 + %t188 = load { ptr, i64, i64 }, ptr %a27 + %t189 = extractvalue { ptr, i64, i64 } %t188, 1 + %t190 = icmp uge i64 7, %t189 + br i1 %t190, label %range9607, label %inrange9608 +range9607: + call void @finch_panic_index(ptr @.str.6591, i64 305, i64 7, i64 %t189) + unreachable +inrange9608: + %t191 = extractvalue { ptr, i64, i64 } %t188, 0 + %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 7 + %t193 = load { ptr, i64, i64 }, ptr %t192 + %t194 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t193) + %t195 = insertvalue %S.lsp.VarRec %t187, i64 %t194, 6 + %t196 = load { ptr, i64, i64 }, ptr %a27 + %t197 = extractvalue { ptr, i64, i64 } %t196, 1 + %t198 = icmp uge i64 8, %t197 + br i1 %t198, label %range9609, label %inrange9610 +range9609: + call void @finch_panic_index(ptr @.str.6592, i64 305, i64 8, i64 %t197) + unreachable +inrange9610: + %t199 = extractvalue { ptr, i64, i64 } %t196, 0 + %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 8 + %t201 = load { ptr, i64, i64 }, ptr %t200 + %t202 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t201) + %t203 = insertvalue %S.lsp.VarRec %t195, i64 %t202, 7 + %t204 = load i64, ptr %t131 + %t205 = add i64 %t204, 1 + call void @finch_arr_reserve(ptr %t130, i64 %t205, i64 ptrtoint (ptr getelementptr (%S.lsp.VarRec, ptr null, i32 1) to i64)) + %t206 = load ptr, ptr %t130 + %t207 = getelementptr inbounds %S.lsp.VarRec, ptr %t206, i64 %t204 + store %S.lsp.VarRec %t203, ptr %t207 + store i64 %t205, ptr %t131 + br label %endif9594 +else9593: + %t208 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.6593, i64 2, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br label %logic.from9611 +logic.from9611: + br i1 %t212, label %logic.rhs9612, label %logic.end9613 +logic.rhs9612: + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t214 = load i64, ptr %t213 + %t215 = icmp sge i64 %t214, 10 + br label %logic.rend9614 +logic.rend9614: + br label %logic.end9613 +logic.end9613: + %t216 = phi i1 [ false, %logic.from9611 ], [ %t215, %logic.rend9614 ] + br i1 %t216, label %then9615, label %else9616 +then9615: + %t217 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 2 + %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i32 0, i32 1 + %t219 = load { ptr, i64, i64 }, ptr %a27 + %t220 = extractvalue { ptr, i64, i64 } %t219, 1 + %t221 = icmp uge i64 1, %t220 + br i1 %t221, label %range9618, label %inrange9619 +range9618: + call void @finch_panic_index(ptr @.str.6594, i64 307, i64 1, i64 %t220) + unreachable +inrange9619: + %t222 = extractvalue { ptr, i64, i64 } %t219, 0 + %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 1 + %t224 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_copy(ptr %a226, ptr %a225) + %t227 = load { ptr, i64, i64 }, ptr %a226 + %t228 = insertvalue %S.lsp.FnRec zeroinitializer, { ptr, i64, i64 } %t227, 0 + %t229 = load { ptr, i64, i64 }, ptr %a27 + %t230 = extractvalue { ptr, i64, i64 } %t229, 1 + %t231 = icmp uge i64 2, %t230 + br i1 %t231, label %range9620, label %inrange9621 +range9620: + call void @finch_panic_index(ptr @.str.6595, i64 307, i64 2, i64 %t230) + unreachable +inrange9621: + %t232 = extractvalue { ptr, i64, i64 } %t229, 0 + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 2 + %t234 = load { ptr, i64, i64 }, ptr %t233 + store { ptr, i64, i64 } %t234, ptr %a235 + call void @finch_str_copy(ptr %a236, ptr %a235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + %t238 = insertvalue %S.lsp.FnRec %t228, { ptr, i64, i64 } %t237, 1 + %t239 = load { ptr, i64, i64 }, ptr %a27 + %t240 = extractvalue { ptr, i64, i64 } %t239, 1 + %t241 = icmp uge i64 3, %t240 + br i1 %t241, label %range9622, label %inrange9623 +range9622: + call void @finch_panic_index(ptr @.str.6596, i64 307, i64 3, i64 %t240) + unreachable +inrange9623: + %t242 = extractvalue { ptr, i64, i64 } %t239, 0 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 3 + %t244 = load { ptr, i64, i64 }, ptr %t243 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = insertvalue %S.lsp.FnRec %t238, { ptr, i64, i64 } %t247, 2 + %t249 = load { ptr, i64, i64 }, ptr %a27 + %t250 = extractvalue { ptr, i64, i64 } %t249, 1 + %t251 = icmp uge i64 4, %t250 + br i1 %t251, label %range9624, label %inrange9625 +range9624: + call void @finch_panic_index(ptr @.str.6597, i64 307, i64 4, i64 %t250) + unreachable +inrange9625: + %t252 = extractvalue { ptr, i64, i64 } %t249, 0 + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i64 4 + %t254 = load { ptr, i64, i64 }, ptr %t253 + store { ptr, i64, i64 } %t254, ptr %a255 + call void @finch_str_copy(ptr %a256, ptr %a255) + %t257 = load { ptr, i64, i64 }, ptr %a256 + %t258 = insertvalue %S.lsp.FnRec %t248, { ptr, i64, i64 } %t257, 3 + %t259 = load { ptr, i64, i64 }, ptr %a27 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 5, %t260 + br i1 %t261, label %range9626, label %inrange9627 +range9626: + call void @finch_panic_index(ptr @.str.6598, i64 307, i64 5, i64 %t260) + unreachable +inrange9627: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 5 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t264) + %t266 = insertvalue %S.lsp.FnRec %t258, i64 %t265, 4 + %t267 = load { ptr, i64, i64 }, ptr %a27 + %t268 = extractvalue { ptr, i64, i64 } %t267, 1 + %t269 = icmp uge i64 6, %t268 + br i1 %t269, label %range9628, label %inrange9629 +range9628: + call void @finch_panic_index(ptr @.str.6599, i64 307, i64 6, i64 %t268) + unreachable +inrange9629: + %t270 = extractvalue { ptr, i64, i64 } %t267, 0 + %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i64 6 + %t272 = load { ptr, i64, i64 }, ptr %t271 + %t273 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t272) + %t274 = insertvalue %S.lsp.FnRec %t266, i64 %t273, 5 + %t275 = load { ptr, i64, i64 }, ptr %a27 + %t276 = extractvalue { ptr, i64, i64 } %t275, 1 + %t277 = icmp uge i64 7, %t276 + br i1 %t277, label %range9630, label %inrange9631 +range9630: + call void @finch_panic_index(ptr @.str.6600, i64 307, i64 7, i64 %t276) + unreachable +inrange9631: + %t278 = extractvalue { ptr, i64, i64 } %t275, 0 + %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 7 + %t280 = load { ptr, i64, i64 }, ptr %t279 + %t281 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t280) + %t282 = insertvalue %S.lsp.FnRec %t274, i64 %t281, 6 + %t283 = load { ptr, i64, i64 }, ptr %a27 + %t284 = extractvalue { ptr, i64, i64 } %t283, 1 + %t285 = icmp uge i64 8, %t284 + br i1 %t285, label %range9632, label %inrange9633 +range9632: + call void @finch_panic_index(ptr @.str.6601, i64 307, i64 8, i64 %t284) + unreachable +inrange9633: + %t286 = extractvalue { ptr, i64, i64 } %t283, 0 + %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 8 + %t288 = load { ptr, i64, i64 }, ptr %t287 + %t289 = call { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %t288) + %t290 = insertvalue %S.lsp.FnRec %t282, { ptr, i64, i64 } %t289, 7 + %t291 = load { ptr, i64, i64 }, ptr %a27 + %t292 = extractvalue { ptr, i64, i64 } %t291, 1 + %t293 = icmp uge i64 9, %t292 + br i1 %t293, label %range9634, label %inrange9635 +range9634: + call void @finch_panic_index(ptr @.str.6602, i64 307, i64 9, i64 %t292) + unreachable +inrange9635: + %t294 = extractvalue { ptr, i64, i64 } %t291, 0 + %t295 = getelementptr inbounds { ptr, i64, i64 }, ptr %t294, i64 9 + %t296 = load { ptr, i64, i64 }, ptr %t295 + store { ptr, i64, i64 } %t296, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.6604, i64 1, i64 0 }, ptr %a299 + call void @finch_str_split(ptr %a300, ptr %a297, ptr %a299) + %t301 = load { ptr, i64, i64 }, ptr %a300 + %t302 = insertvalue %S.lsp.FnRec %t290, { ptr, i64, i64 } %t301, 8 + %t303 = load i64, ptr %t218 + %t304 = add i64 %t303, 1 + call void @finch_arr_reserve(ptr %t217, i64 %t304, i64 ptrtoint (ptr getelementptr (%S.lsp.FnRec, ptr null, i32 1) to i64)) + %t305 = load ptr, ptr %t217 + %t306 = getelementptr inbounds %S.lsp.FnRec, ptr %t305, i64 %t303 + store %S.lsp.FnRec %t302, ptr %t306 + store i64 %t304, ptr %t218 + br label %endif9617 +else9616: + %t307 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t307, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.6605, i64 2, i64 0 }, ptr %a309 + %t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309) + %t311 = icmp ne i32 %t310, 0 + br label %logic.from9636 +logic.from9636: + br i1 %t311, label %logic.rhs9637, label %logic.end9638 +logic.rhs9637: + %t312 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t313 = load i64, ptr %t312 + %t314 = icmp sge i64 %t313, 6 + br label %logic.rend9639 +logic.rend9639: + br label %logic.end9638 +logic.end9638: + %t315 = phi i1 [ false, %logic.from9636 ], [ %t314, %logic.rend9639 ] + br i1 %t315, label %then9640, label %else9641 +then9640: + %t316 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i32 0, i32 1 + %t318 = load { ptr, i64, i64 }, ptr %a27 + %t319 = extractvalue { ptr, i64, i64 } %t318, 1 + %t320 = icmp uge i64 1, %t319 + br i1 %t320, label %range9643, label %inrange9644 +range9643: + call void @finch_panic_index(ptr @.str.6606, i64 309, i64 1, i64 %t319) + unreachable +inrange9644: + %t321 = extractvalue { ptr, i64, i64 } %t318, 0 + %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i64 1 + %t323 = load { ptr, i64, i64 }, ptr %t322 + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_copy(ptr %a325, ptr %a324) + %t326 = load { ptr, i64, i64 }, ptr %a325 + %t327 = insertvalue %S.lsp.StructRec zeroinitializer, { ptr, i64, i64 } %t326, 0 + %t328 = load { ptr, i64, i64 }, ptr %a27 + %t329 = extractvalue { ptr, i64, i64 } %t328, 1 + %t330 = icmp uge i64 2, %t329 + br i1 %t330, label %range9645, label %inrange9646 +range9645: + call void @finch_panic_index(ptr @.str.6607, i64 309, i64 2, i64 %t329) + unreachable +inrange9646: + %t331 = extractvalue { ptr, i64, i64 } %t328, 0 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i64 2 + %t333 = load { ptr, i64, i64 }, ptr %t332 + store { ptr, i64, i64 } %t333, ptr %a334 + call void @finch_str_copy(ptr %a335, ptr %a334) + %t336 = load { ptr, i64, i64 }, ptr %a335 + %t337 = insertvalue %S.lsp.StructRec %t327, { ptr, i64, i64 } %t336, 1 + %t338 = load { ptr, i64, i64 }, ptr %a27 + %t339 = extractvalue { ptr, i64, i64 } %t338, 1 + %t340 = icmp uge i64 3, %t339 + br i1 %t340, label %range9647, label %inrange9648 +range9647: + call void @finch_panic_index(ptr @.str.6608, i64 309, i64 3, i64 %t339) + unreachable +inrange9648: + %t341 = extractvalue { ptr, i64, i64 } %t338, 0 + %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 3 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t343, ptr %a344 + call void @finch_str_copy(ptr %a345, ptr %a344) + %t346 = load { ptr, i64, i64 }, ptr %a345 + %t347 = insertvalue %S.lsp.StructRec %t337, { ptr, i64, i64 } %t346, 2 + %t348 = load { ptr, i64, i64 }, ptr %a27 + %t349 = extractvalue { ptr, i64, i64 } %t348, 1 + %t350 = icmp uge i64 4, %t349 + br i1 %t350, label %range9649, label %inrange9650 +range9649: + call void @finch_panic_index(ptr @.str.6609, i64 309, i64 4, i64 %t349) + unreachable +inrange9650: + %t351 = extractvalue { ptr, i64, i64 } %t348, 0 + %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i64 4 + %t353 = load { ptr, i64, i64 }, ptr %t352 + %t354 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t353) + %t355 = insertvalue %S.lsp.StructRec %t347, i64 %t354, 3 + %t356 = load { ptr, i64, i64 }, ptr %a27 + %t357 = extractvalue { ptr, i64, i64 } %t356, 1 + %t358 = icmp uge i64 5, %t357 + br i1 %t358, label %range9651, label %inrange9652 +range9651: + call void @finch_panic_index(ptr @.str.6610, i64 309, i64 5, i64 %t357) + unreachable +inrange9652: + %t359 = extractvalue { ptr, i64, i64 } %t356, 0 + %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 5 + %t361 = load { ptr, i64, i64 }, ptr %t360 + %t362 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t361) + %t363 = insertvalue %S.lsp.StructRec %t355, i64 %t362, 4 + %t364 = load i64, ptr %t317 + %t365 = add i64 %t364, 1 + call void @finch_arr_reserve(ptr %t316, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.lsp.StructRec, ptr null, i32 1) to i64)) + %t366 = load ptr, ptr %t316 + %t367 = getelementptr inbounds %S.lsp.StructRec, ptr %t366, i64 %t364 + store %S.lsp.StructRec %t363, ptr %t367 + store i64 %t365, ptr %t317 + br label %endif9642 +else9641: + %t368 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t368, ptr %a369 + store { ptr, i64, i64 } { ptr @.str.6611, i64 3, i64 0 }, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br label %logic.from9653 +logic.from9653: + br i1 %t372, label %logic.rhs9654, label %logic.end9655 +logic.rhs9654: + %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t374 = load i64, ptr %t373 + %t375 = icmp sge i64 %t374, 5 + br label %logic.rend9656 +logic.rend9656: + br label %logic.end9655 +logic.end9655: + %t376 = phi i1 [ false, %logic.from9653 ], [ %t375, %logic.rend9656 ] + br label %logic.from9657 +logic.from9657: + br i1 %t376, label %logic.rhs9658, label %logic.end9659 +logic.rhs9658: + %t377 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %t377, i32 0, i32 1 + %t379 = load i64, ptr %t378 + %t380 = icmp sgt i64 %t379, 0 + br label %logic.rend9660 +logic.rend9660: + br label %logic.end9659 +logic.end9659: + %t381 = phi i1 [ false, %logic.from9657 ], [ %t380, %logic.rend9660 ] + br i1 %t381, label %then9661, label %else9662 +then9661: + %t382 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %t382, i32 0, i32 1 + %t384 = load i64, ptr %t383 + %t385 = sub i64 %t384, 1 + store i64 %t385, ptr %a386 + %t387 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t388 = load i64, ptr %a386 + %t389 = load { ptr, i64, i64 }, ptr %t387 + %t390 = extractvalue { ptr, i64, i64 } %t389, 1 + %t391 = icmp uge i64 %t388, %t390 + br i1 %t391, label %range9664, label %inrange9665 +range9664: + call void @finch_panic_index(ptr @.str.6612, i64 312, i64 %t388, i64 %t390) + unreachable +inrange9665: + %t392 = extractvalue { ptr, i64, i64 } %t389, 0 + %t393 = getelementptr inbounds %S.lsp.StructRec, ptr %t392, i64 %t388 + %t394 = getelementptr inbounds %S.lsp.StructRec, ptr %t393, i32 0, i32 5 + %t395 = getelementptr inbounds { ptr, i64, i64 }, ptr %t394, i32 0, i32 1 + %t396 = load { ptr, i64, i64 }, ptr %a27 + %t397 = extractvalue { ptr, i64, i64 } %t396, 1 + %t398 = icmp uge i64 3, %t397 + br i1 %t398, label %range9666, label %inrange9667 +range9666: + call void @finch_panic_index(ptr @.str.6613, i64 312, i64 3, i64 %t397) + unreachable +inrange9667: + %t399 = extractvalue { ptr, i64, i64 } %t396, 0 + %t400 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 3 + %t401 = load { ptr, i64, i64 }, ptr %t400 + store { ptr, i64, i64 } %t401, ptr %a402 + call void @finch_str_copy(ptr %a403, ptr %a402) + %t404 = load { ptr, i64, i64 }, ptr %a403 + %t405 = load i64, ptr %t395 + %t406 = add i64 %t405, 1 + call void @finch_arr_reserve(ptr %t394, i64 %t406, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t407 = load ptr, ptr %t394 + %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %t407, i64 %t405 + store { ptr, i64, i64 } %t404, ptr %t408 + store i64 %t406, ptr %t395 + %t409 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t410 = load i64, ptr %a386 + %t411 = load { ptr, i64, i64 }, ptr %t409 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 %t410, %t412 + br i1 %t413, label %range9668, label %inrange9669 +range9668: + call void @finch_panic_index(ptr @.str.6614, i64 313, i64 %t410, i64 %t412) + unreachable +inrange9669: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds %S.lsp.StructRec, ptr %t414, i64 %t410 + %t416 = getelementptr inbounds %S.lsp.StructRec, ptr %t415, i32 0, i32 6 + %t417 = getelementptr inbounds { ptr, i64, i64 }, ptr %t416, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %a27 + %t419 = extractvalue { ptr, i64, i64 } %t418, 1 + %t420 = icmp uge i64 4, %t419 + br i1 %t420, label %range9670, label %inrange9671 +range9670: + call void @finch_panic_index(ptr @.str.6615, i64 313, i64 4, i64 %t419) + unreachable +inrange9671: + %t421 = extractvalue { ptr, i64, i64 } %t418, 0 + %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 4 + %t423 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t423, ptr %a424 + call void @finch_str_copy(ptr %a425, ptr %a424) + %t426 = load { ptr, i64, i64 }, ptr %a425 + %t427 = load i64, ptr %t417 + %t428 = add i64 %t427, 1 + call void @finch_arr_reserve(ptr %t416, i64 %t428, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t429 = load ptr, ptr %t416 + %t430 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i64 %t427 + store { ptr, i64, i64 } %t426, ptr %t430 + store i64 %t428, ptr %t417 + br label %endif9663 +else9662: + %t431 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t431, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.6616, i64 2, i64 0 }, ptr %a433 + %t434 = call i32 @finch_str_eq(ptr %a432, ptr %a433) + %t435 = icmp ne i32 %t434, 0 + br label %logic.from9672 +logic.from9672: + br i1 %t435, label %logic.rhs9673, label %logic.end9674 +logic.rhs9673: + %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t437 = load i64, ptr %t436 + %t438 = icmp sge i64 %t437, 7 + br label %logic.rend9675 +logic.rend9675: + br label %logic.end9674 +logic.end9674: + %t439 = phi i1 [ false, %logic.from9672 ], [ %t438, %logic.rend9675 ] + br i1 %t439, label %then9676, label %else9677 +then9676: + %t440 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 4 + %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t440, i32 0, i32 1 + %t442 = load { ptr, i64, i64 }, ptr %a27 + %t443 = extractvalue { ptr, i64, i64 } %t442, 1 + %t444 = icmp uge i64 1, %t443 + br i1 %t444, label %range9679, label %inrange9680 +range9679: + call void @finch_panic_index(ptr @.str.6617, i64 315, i64 1, i64 %t443) + unreachable +inrange9680: + %t445 = extractvalue { ptr, i64, i64 } %t442, 0 + %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i64 1 + %t447 = load { ptr, i64, i64 }, ptr %t446 + store { ptr, i64, i64 } %t447, ptr %a448 + call void @finch_str_copy(ptr %a449, ptr %a448) + %t450 = load { ptr, i64, i64 }, ptr %a449 + %t451 = insertvalue %S.lsp.EnumRec zeroinitializer, { ptr, i64, i64 } %t450, 0 + %t452 = load { ptr, i64, i64 }, ptr %a27 + %t453 = extractvalue { ptr, i64, i64 } %t452, 1 + %t454 = icmp uge i64 2, %t453 + br i1 %t454, label %range9681, label %inrange9682 +range9681: + call void @finch_panic_index(ptr @.str.6618, i64 315, i64 2, i64 %t453) + unreachable +inrange9682: + %t455 = extractvalue { ptr, i64, i64 } %t452, 0 + %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 2 + %t457 = load { ptr, i64, i64 }, ptr %t456 + store { ptr, i64, i64 } %t457, ptr %a458 + call void @finch_str_copy(ptr %a459, ptr %a458) + %t460 = load { ptr, i64, i64 }, ptr %a459 + %t461 = insertvalue %S.lsp.EnumRec %t451, { ptr, i64, i64 } %t460, 1 + %t462 = load { ptr, i64, i64 }, ptr %a27 + %t463 = extractvalue { ptr, i64, i64 } %t462, 1 + %t464 = icmp uge i64 3, %t463 + br i1 %t464, label %range9683, label %inrange9684 +range9683: + call void @finch_panic_index(ptr @.str.6619, i64 315, i64 3, i64 %t463) + unreachable +inrange9684: + %t465 = extractvalue { ptr, i64, i64 } %t462, 0 + %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 3 + %t467 = load { ptr, i64, i64 }, ptr %t466 + store { ptr, i64, i64 } %t467, ptr %a468 + call void @finch_str_copy(ptr %a469, ptr %a468) + %t470 = load { ptr, i64, i64 }, ptr %a469 + %t471 = insertvalue %S.lsp.EnumRec %t461, { ptr, i64, i64 } %t470, 2 + %t472 = load { ptr, i64, i64 }, ptr %a27 + %t473 = extractvalue { ptr, i64, i64 } %t472, 1 + %t474 = icmp uge i64 4, %t473 + br i1 %t474, label %range9685, label %inrange9686 +range9685: + call void @finch_panic_index(ptr @.str.6620, i64 315, i64 4, i64 %t473) + unreachable +inrange9686: + %t475 = extractvalue { ptr, i64, i64 } %t472, 0 + %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 4 + %t477 = load { ptr, i64, i64 }, ptr %t476 + %t478 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t477) + %t479 = insertvalue %S.lsp.EnumRec %t471, i64 %t478, 3 + %t480 = load { ptr, i64, i64 }, ptr %a27 + %t481 = extractvalue { ptr, i64, i64 } %t480, 1 + %t482 = icmp uge i64 5, %t481 + br i1 %t482, label %range9687, label %inrange9688 +range9687: + call void @finch_panic_index(ptr @.str.6621, i64 315, i64 5, i64 %t481) + unreachable +inrange9688: + %t483 = extractvalue { ptr, i64, i64 } %t480, 0 + %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 5 + %t485 = load { ptr, i64, i64 }, ptr %t484 + %t486 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t485) + %t487 = insertvalue %S.lsp.EnumRec %t479, i64 %t486, 4 + %t488 = load { ptr, i64, i64 }, ptr %a27 + %t489 = extractvalue { ptr, i64, i64 } %t488, 1 + %t490 = icmp uge i64 6, %t489 + br i1 %t490, label %range9689, label %inrange9690 +range9689: + call void @finch_panic_index(ptr @.str.6622, i64 315, i64 6, i64 %t489) + unreachable +inrange9690: + %t491 = extractvalue { ptr, i64, i64 } %t488, 0 + %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 6 + %t493 = load { ptr, i64, i64 }, ptr %t492 + store { ptr, i64, i64 } %t493, ptr %a494 + store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a496 + call void @finch_str_split(ptr %a497, ptr %a494, ptr %a496) + %t498 = load { ptr, i64, i64 }, ptr %a497 + %t499 = insertvalue %S.lsp.EnumRec %t487, { ptr, i64, i64 } %t498, 5 + %t500 = load i64, ptr %t441 + %t501 = add i64 %t500, 1 + call void @finch_arr_reserve(ptr %t440, i64 %t501, i64 ptrtoint (ptr getelementptr (%S.lsp.EnumRec, ptr null, i32 1) to i64)) + %t502 = load ptr, ptr %t440 + %t503 = getelementptr inbounds %S.lsp.EnumRec, ptr %t502, i64 %t500 + store %S.lsp.EnumRec %t499, ptr %t503 + store i64 %t501, ptr %t441 + br label %endif9678 +else9677: + %t504 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t504, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.6625, i64 2, i64 0 }, ptr %a506 + %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) + %t508 = icmp ne i32 %t507, 0 + br label %logic.from9691 +logic.from9691: + br i1 %t508, label %logic.rhs9692, label %logic.end9693 +logic.rhs9692: + %t509 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t510 = load i64, ptr %t509 + %t511 = icmp sge i64 %t510, 2 + br label %logic.rend9694 +logic.rend9694: + br label %logic.end9693 +logic.end9693: + %t512 = phi i1 [ false, %logic.from9691 ], [ %t511, %logic.rend9694 ] + br i1 %t512, label %then9695, label %endif9697 +then9695: + %t513 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 5 + %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i32 0, i32 1 + %t515 = load { ptr, i64, i64 }, ptr %a27 + %t516 = extractvalue { ptr, i64, i64 } %t515, 1 + %t517 = icmp uge i64 1, %t516 + br i1 %t517, label %range9698, label %inrange9699 +range9698: + call void @finch_panic_index(ptr @.str.6626, i64 317, i64 1, i64 %t516) + unreachable +inrange9699: + %t518 = extractvalue { ptr, i64, i64 } %t515, 0 + %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 1 + %t520 = load { ptr, i64, i64 }, ptr %t519 + store { ptr, i64, i64 } %t520, ptr %a521 + call void @finch_str_copy(ptr %a522, ptr %a521) + %t523 = load { ptr, i64, i64 }, ptr %a522 + %t524 = load i64, ptr %t514 + %t525 = add i64 %t524, 1 + call void @finch_arr_reserve(ptr %t513, i64 %t525, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t526 = load ptr, ptr %t513 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t524 + store { ptr, i64, i64 } %t523, ptr %t527 + store i64 %t525, ptr %t514 + br label %endif9697 +endif9697: + br label %endif9678 +endif9678: + br label %endif9663 +endif9663: + br label %endif9642 +endif9642: + br label %endif9617 +endif9617: + br label %endif9594 +endif9594: + br label %endif9571 +endif9571: + br label %endif9562 +else9561: + %t528 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t529 = getelementptr inbounds %S.lsp.Diag, ptr %t528, i32 0, i32 0 + %t530 = load i1, ptr %t529 + %t531 = xor i1 %t530, true + br i1 %t531, label %then9700, label %endif9702 +then9700: + %t532 = load { ptr, i64, i64 }, ptr %a18 + %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) + %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + store %S.lsp.Diag %t533, ptr %t534 + br label %endif9702 +endif9702: + br label %endif9562 +endif9562: + br label %each.step9558 +each.step9558: + %t535 = load i64, ptr %a10 + %t536 = add i64 %t535, 1 + store i64 %t536, ptr %a10 + br label %each.cond9556 +each.end9559: + %t537 = load %S.lsp.Analysis, ptr %a2 + store %S.lsp.Analysis %t537, ptr %a538 + call void @finch.copy.S_lsp_Analysis(ptr %a539, ptr %a538) + %t540 = load %S.lsp.Analysis, ptr %a539 + ret %S.lsp.Analysis %t540 +} + +define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca i64, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a25 = alloca i64, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca %S.lsp.Analysis, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca i32, align 16 + %a190 = alloca %S.lsp.Analysis, align 16 + %a191 = alloca %S.lsp.Analysis, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca %S.lsp.Analysis, align 16 + %a211 = alloca %S.lsp.Analysis, align 16 + %a213 = alloca %S.lsp.Analysis, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca i32, align 16 + %a262 = alloca %S.lsp.Analysis, align 16 + %a263 = alloca %S.lsp.Analysis, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t3 = load { ptr, i64, i64 }, ptr %t2 + store { ptr, i64, i64 } { ptr @.str.6627, i64 10, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6628, i64 1, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t11, ptr %a13 + call void @finch_str_copy(ptr %a12, ptr %a13) + %t14 = call i64 @finch_shell(ptr %a12) + store { ptr, i64, i64 } { ptr @.str.6629, i64 0, i64 0 }, ptr %a15 + store i64 0, ptr %a16 + %t17 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %a18 + %t19 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t20 = load i64, ptr %t19 + call void @finch_arr_make(ptr %a18, i64 %t20, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t21 = load ptr, ptr %a18 + store i64 0, ptr %a22 + %t23 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 2 + %t24 = load i64, ptr %t23 + store i64 0, ptr %a25 + br label %n.cond9718 +n.cond9718: + %t26 = load i64, ptr %a25 + %t27 = icmp slt i64 %t26, %t24 + br i1 %t27, label %n.body9719, label %n.end9720 +n.body9719: + %t28 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 0 + %t29 = load ptr, ptr %t28 + %t30 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t29, i64 %t26 + %t31 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t30, i32 0, i32 0 + %t32 = load i64, ptr %t31 + %t33 = icmp ne i64 %t32, 0 + br i1 %t33, label %entry.live9721, label %entry.next9722 +entry.live9721: + %t34 = load i64, ptr %a22 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i64 %t34 + %t36 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t30, i32 0, i32 1 + call void @finch_str_copy(ptr %t35, ptr %t36) + %t37 = add i64 %t34, 1 + store i64 %t37, ptr %a22 + br label %entry.next9722 +entry.next9722: + %t38 = load i64, ptr %a25 + %t39 = add i64 %t38, 1 + store i64 %t39, ptr %a25 + br label %n.cond9718 +n.end9720: + %t40 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t40, ptr %a41 + store i64 0, ptr %a42 + br label %each.cond9723 +each.cond9723: + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a41, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = load i64, ptr %a42 + %t46 = icmp slt i64 %t45, %t44 + br i1 %t46, label %each.body9724, label %each.end9726 +each.body9724: + %t47 = load ptr, ptr %a41 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + %t49 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t49, ptr %a50 + %t51 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.6630, i64 4, i64 0 }, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a53 + %t57 = load i64, ptr %a16 + call void @finch_str_from_int(ptr %a58, i64 %t57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.6631, i64 4, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t67, ptr %a68 + %t69 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t69, ptr %a70 + %t71 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t72 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t72, ptr %a73 + %t74 = call i64 @finch_map_find(ptr %t71, ptr %a73, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t75 = icmp slt i64 %t74, 0 + br i1 %t75, label %map.missing9727, label %map.found9728 +map.missing9727: + store { ptr, i64, i64 } zeroinitializer, ptr %a76 + store { ptr, i64, i64 } %t72, ptr %a77 + call void @finch_buf_str(ptr %a76, ptr %a77, i32 1) + call void @finch_map_missing(ptr @.str.6632, i64 333, ptr %a76) + unreachable +map.found9728: + %t78 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t71, i32 0, i32 0 + %t79 = load ptr, ptr %t78 + %t80 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t79, i64 %t74 + %t81 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t80, i32 0, i32 2 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = call i32 @finch_write_file(ptr %a70, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + %t86 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6633, i64 12, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t90, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t95, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a96 + %t100 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t99, ptr %a102 + store { ptr, i64, i64 } %t100, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a101 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6635, i64 1, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t108, ptr %a15 + %t109 = load i64, ptr %a16 + %t110 = add i64 %t109, 1 + store i64 %t110, ptr %a16 + br label %each.step9725 +each.step9725: + %t111 = load i64, ptr %a42 + %t112 = add i64 %t111, 1 + store i64 %t112, ptr %a42 + br label %each.cond9723 +each.end9726: + %t113 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.6636, i64 8, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t118, ptr %a119 + %t120 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.6637, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.6638, i64 9, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a126 + %t130 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t129, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6639, i64 1, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a135 + %t139 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t138, ptr %a141 + store { ptr, i64, i64 } %t139, ptr %a142 + call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.6640, i64 4, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a144 + %t148 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t147, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.6641, i64 6, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t156, ptr %a158 + call void @finch_str_copy(ptr %a157, ptr %a158) + %t159 = call i64 @finch_shell(ptr %a157) + %t160 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t160, ptr %a161 + store { ptr, i64, i64 } zeroinitializer, ptr %a162 + store { ptr, i64, i64 } zeroinitializer, ptr %a163 + %t164 = call i32 @finch_try_read_file(ptr %a162, ptr %a161, ptr %a163) + %t165 = icmp eq i32 %t164, 0 + %t166 = load { ptr, i64, i64 }, ptr %a163 + %t167 = load { ptr, i64, i64 }, ptr %a162 + br i1 %t165, label %or.failed9729, label %or.ok9730 +or.failed9729: + store { ptr, i64, i64 } %t166, ptr %a168 + br label %or.bend9731 +or.bend9731: + br label %or.end9732 +or.ok9730: + br label %or.end9732 +or.end9732: + %t169 = phi { ptr, i64, i64 } [ { ptr @.str.6642, i64 0, i64 0 }, %or.bend9731 ], [ %t167, %or.ok9730 ] + %t170 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t169) + store %S.lsp.Analysis %t170, ptr %a171 + %t172 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 6 + %t173 = getelementptr inbounds %S.lsp.Diag, ptr %t172, i32 0, i32 0 + %t174 = load i1, ptr %t173 + %t175 = xor i1 %t174, true + br i1 %t175, label %then9733, label %else9734 +then9733: + %t176 = load %S.lsp.Analysis, ptr %a171 + %t177 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t178 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t178, ptr %a179 + store i32 0, ptr %a180 + %t181 = call i64 @finch_map_slot(ptr %t177, ptr %a179, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a180) + %t182 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t177, i32 0, i32 0 + %t183 = load ptr, ptr %t182 + %t184 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t183, i64 %t181 + %t185 = load i32, ptr %a180 + %t186 = icmp ne i32 %t185, 0 + br i1 %t186, label %map.new9736, label %map.have9737 +map.new9736: + %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 1 + call void @finch_str_copy(ptr %t187, ptr %a179) + %t188 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t188 + br label %map.have9737 +map.have9737: + %t189 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 2 + store %S.lsp.Analysis %t176, ptr %a190 + call void @finch.copy.S_lsp_Analysis(ptr %a191, ptr %a190) + %t192 = load %S.lsp.Analysis, ptr %a191 + store %S.lsp.Analysis %t192, ptr %t189 + br label %endif9735 +else9734: + %t193 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t194 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t194, ptr %a195 + %t196 = call i64 @finch_map_find(ptr %t193, ptr %a195, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t197 = icmp sge i64 %t196, 0 + br i1 %t197, label %then9738, label %endif9740 +then9738: + %t198 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t199 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = call i64 @finch_map_find(ptr %t198, ptr %a200, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t202 = icmp slt i64 %t201, 0 + br i1 %t202, label %map.missing9741, label %map.found9742 +map.missing9741: + store { ptr, i64, i64 } zeroinitializer, ptr %a203 + store { ptr, i64, i64 } %t199, ptr %a204 + call void @finch_buf_str(ptr %a203, ptr %a204, i32 1) + call void @finch_map_missing(ptr @.str.6643, i64 344, ptr %a203) + unreachable +map.found9742: + %t205 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t198, i32 0, i32 0 + %t206 = load ptr, ptr %t205 + %t207 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t206, i64 %t201 + %t208 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t207, i32 0, i32 2 + %t209 = load %S.lsp.Analysis, ptr %t208 + store %S.lsp.Analysis %t209, ptr %a210 + call void @finch.copy.S_lsp_Analysis(ptr %a211, ptr %a210) + %t212 = load %S.lsp.Analysis, ptr %a211 + store %S.lsp.Analysis %t212, ptr %a213 + %t214 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 2 + %t215 = load { ptr, i64, i64 }, ptr %t214 + %t216 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 2 + store { ptr, i64, i64 } %t215, ptr %a217 + call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) + %t219 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t219, ptr %t216 + %t220 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 + %t221 = load { ptr, i64, i64 }, ptr %t220 + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 3 + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch.copy.arr_S_lsp_StructRec(ptr %a224, ptr %a223) + %t225 = load { ptr, i64, i64 }, ptr %a224 + store { ptr, i64, i64 } %t225, ptr %t222 + %t226 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 + %t227 = load { ptr, i64, i64 }, ptr %t226 + %t228 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 4 + store { ptr, i64, i64 } %t227, ptr %a229 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %a230, ptr %a229) + %t231 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t231, ptr %t228 + %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 1 + store { ptr, i64, i64 } %t233, ptr %a235 + call void @finch.copy.arr_S_lsp_VarRec(ptr %a236, ptr %a235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + store { ptr, i64, i64 } %t237, ptr %t234 + %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 5 + %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 + %t240 = load i64, ptr %t239 + %t241 = icmp eq i64 %t240, 0 + br i1 %t241, label %then9743, label %endif9745 +then9743: + %t242 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 5 + store { ptr, i64, i64 } %t243, ptr %a245 + call void @finch.copy.arr_str(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t247, ptr %t244 + br label %endif9745 +endif9745: + br label %endif9740 +endif9740: + br label %endif9735 +endif9735: + %t248 = load %S.lsp.Analysis, ptr %a171 + %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t250 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t250, ptr %a251 + store i32 0, ptr %a252 + %t253 = call i64 @finch_map_slot(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a252) + %t254 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t249, i32 0, i32 0 + %t255 = load ptr, ptr %t254 + %t256 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t255, i64 %t253 + %t257 = load i32, ptr %a252 + %t258 = icmp ne i32 %t257, 0 + br i1 %t258, label %map.new9746, label %map.have9747 +map.new9746: + %t259 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 1 + call void @finch_str_copy(ptr %t259, ptr %a251) + %t260 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t260 + br label %map.have9747 +map.have9747: + %t261 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 2 + store %S.lsp.Analysis %t248, ptr %a262 + call void @finch.copy.S_lsp_Analysis(ptr %a263, ptr %a262) + %t264 = load %S.lsp.Analysis, ptr %a263 + store %S.lsp.Analysis %t264, ptr %t261 + %t265 = load { ptr, i64, i64 }, ptr %a1 + %t266 = load %S.lsp.Analysis, ptr %a171 + call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t265, %S.lsp.Analysis %t266) + ret void +} + +define internal void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %p0, %S.lsp.Analysis %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.lsp.Analysis, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca i64, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca i64, align 16 + %a29 = alloca i64, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca i64, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca %S.json.Json, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca i64, align 16 + %a88 = alloca i64, align 16 + %a92 = alloca %S.json.Json, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca %S.json.Json, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.lsp.Analysis %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + %t7 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t8 = call ptr @finch_alloc(i64 %t7) + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 0 + store { ptr, i64, i64 } %t6, ptr %t9 + %t10 = insertvalue { ptr, i64, i64 } undef, ptr %t8, 0 + %t11 = insertvalue { ptr, i64, i64 } %t10, i64 1, 1 + %t12 = insertvalue { ptr, i64, i64 } %t11, i64 1, 2 + store { ptr, i64, i64 } %t12, ptr %a13 + %t14 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store i64 0, ptr %a15 + br label %each.cond9748 +each.cond9748: + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = load i64, ptr %a15 + %t19 = icmp slt i64 %t18, %t17 + br i1 %t19, label %each.body9749, label %each.end9751 +each.body9749: + %t20 = load ptr, ptr %t14 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t25 = load { ptr, i64, i64 }, ptr %a23 + store i64 -1, ptr %a26 + %t27 = load i64, ptr %t24 + %t28 = load ptr, ptr %a13 + store i64 0, ptr %a29 + br label %find.cond9752 +find.cond9752: + %t30 = load i64, ptr %a29 + %t31 = icmp slt i64 %t30, %t27 + br i1 %t31, label %find.body9753, label %find.end9756 +find.body9753: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t30 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + store { ptr, i64, i64 } %t25, ptr %a35 + %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) + %t37 = icmp ne i32 %t36, 0 + br i1 %t37, label %find.hit9754, label %find.next9755 +find.hit9754: + store i64 %t30, ptr %a26 + br label %find.end9756 +find.next9755: + %t38 = add i64 %t30, 1 + store i64 %t38, ptr %a29 + br label %find.cond9752 +find.end9756: + %t39 = load i64, ptr %a26 + %t40 = icmp sge i64 %t39, 0 + %t41 = xor i1 %t40, true + br i1 %t41, label %then9757, label %endif9759 +then9757: + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t43, ptr %a44 + call void @finch_str_copy(ptr %a45, ptr %a44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load i64, ptr %t42 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a13, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a13 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t42 + br label %endif9759 +endif9759: + br label %each.step9750 +each.step9750: + %t51 = load i64, ptr %a15 + %t52 = add i64 %t51, 1 + store i64 %t52, ptr %a15 + br label %each.cond9748 +each.end9751: + store { ptr, i64, i64 } zeroinitializer, ptr %a53 + store i64 0, ptr %a54 + br label %each.cond9760 +each.cond9760: + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = load i64, ptr %a54 + %t58 = icmp slt i64 %t57, %t56 + br i1 %t58, label %each.body9761, label %each.end9763 +each.body9761: + %t59 = load ptr, ptr %a13 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 %t57 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + %t63 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t63, ptr %a64 + %t65 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t66 = getelementptr inbounds %S.lsp.Diag, ptr %t65, i32 0, i32 0 + %t67 = load i1, ptr %t66 + br label %logic.from9764 +logic.from9764: + br i1 %t67, label %logic.rhs9765, label %logic.end9766 +logic.rhs9765: + %t68 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t69 = getelementptr inbounds %S.lsp.Diag, ptr %t68, i32 0, i32 1 + %t70 = load { ptr, i64, i64 }, ptr %t69 + %t71 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t70, ptr %a72 + store { ptr, i64, i64 } %t71, ptr %a73 + %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) + %t75 = icmp ne i32 %t74, 0 + br label %logic.rend9767 +logic.rend9767: + br label %logic.end9766 +logic.end9766: + %t76 = phi i1 [ false, %logic.from9764 ], [ %t75, %logic.rend9767 ] + br i1 %t76, label %then9768, label %endif9770 +then9768: + %t77 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t78 = getelementptr inbounds %S.lsp.Diag, ptr %t77, i32 0, i32 2 + %t79 = load i64, ptr %t78 + %t80 = sub i64 %t79, 1 + store i64 %t80, ptr %a81 + %t82 = load i64, ptr %a81 + %t83 = icmp slt i64 %t82, 0 + br i1 %t83, label %then9771, label %endif9773 +then9771: + store i64 0, ptr %a81 + br label %endif9773 +endif9773: + %t84 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t85 = getelementptr inbounds %S.lsp.Diag, ptr %t84, i32 0, i32 3 + %t86 = load i64, ptr %t85 + %t87 = sub i64 %t86, 1 + store i64 %t87, ptr %a88 + %t89 = load i64, ptr %a88 + %t90 = icmp slt i64 %t89, 0 + br i1 %t90, label %then9774, label %endif9776 +then9774: + store i64 0, ptr %a88 + br label %endif9776 +endif9776: + %t91 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t91, ptr %a92 + %t93 = load i64, ptr %a81 + %t94 = load i64, ptr %a88 + %t95 = load i64, ptr %a88 + %t96 = add i64 %t95, 1 + %t97 = call %S.json.Json @finch.lsp.range(i64 %t93, i64 %t94, i64 %t96) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6644, i64 5, i64 0 }, %S.json.Json %t97) + %t98 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6645, i64 8, i64 0 }, %S.json.Json %t98) + %t99 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6647, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6646, i64 6, i64 0 }, %S.json.Json %t99) + %t100 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t101 = getelementptr inbounds %S.lsp.Diag, ptr %t100, i32 0, i32 4 + %t102 = load { ptr, i64, i64 }, ptr %t101 + %t103 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t102) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6648, i64 7, i64 0 }, %S.json.Json %t103) + %t104 = load %S.json.Json, ptr %a92 + call void @finch.json.Json.push(ptr %a64, %S.json.Json %t104) + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t106 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t106, ptr %a107 + call void @finch_str_copy(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = load i64, ptr %t105 + %t111 = add i64 %t110, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t112 = load ptr, ptr %a53 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 + store { ptr, i64, i64 } %t109, ptr %t113 + store i64 %t111, ptr %t105 + br label %endif9770 +endif9770: + %t114 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t114, ptr %a115 + %t116 = load { ptr, i64, i64 }, ptr %a62 + %t117 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t116) + %t118 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t117) + call void @finch.json.Json.set(ptr %a115, { ptr, i64, i64 } { ptr @.str.6649, i64 3, i64 0 }, %S.json.Json %t118) + %t119 = load %S.json.Json, ptr %a64 + call void @finch.json.Json.set(ptr %a115, { ptr, i64, i64 } { ptr @.str.6650, i64 11, i64 0 }, %S.json.Json %t119) + %t120 = load %S.json.Json, ptr %a115 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6651, i64 31, i64 0 }, %S.json.Json %t120) + br label %each.step9762 +each.step9762: + %t121 = load i64, ptr %a54 + %t122 = add i64 %t121, 1 + store i64 %t122, ptr %a54 + br label %each.cond9760 +each.end9763: + %t123 = load { ptr, i64, i64 }, ptr %a53 + %t124 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store { ptr, i64, i64 } %t123, ptr %a125 + call void @finch.copy.arr_str(ptr %a126, ptr %a125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } %t127, ptr %t124 + ret void +} + +define internal i64 @finch.lsp.refAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a19 = alloca %S.lsp.Ref, align 16 + %a20 = alloca %S.lsp.Ref, align 16 + %a22 = alloca %S.lsp.Ref, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond9777 +for.cond9777: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body9778, label %for.end9780 +for.body9778: + %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t12 = load i64, ptr %a8 + %t13 = load { ptr, i64, i64 }, ptr %t11 + %t14 = extractvalue { ptr, i64, i64 } %t13, 1 + %t15 = icmp uge i64 %t12, %t14 + br i1 %t15, label %range9781, label %inrange9782 +range9781: + call void @finch_panic_index(ptr @.str.6652, i64 397, i64 %t12, i64 %t14) + unreachable +inrange9782: + %t16 = extractvalue { ptr, i64, i64 } %t13, 0 + %t17 = getelementptr inbounds %S.lsp.Ref, ptr %t16, i64 %t12 + %t18 = load %S.lsp.Ref, ptr %t17 + store %S.lsp.Ref %t18, ptr %a19 + call void @finch.copy.S_lsp_Ref(ptr %a20, ptr %a19) + %t21 = load %S.lsp.Ref, ptr %a20 + store %S.lsp.Ref %t21, ptr %a22 + %t23 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = load i64, ptr %a3 + %t26 = icmp eq i64 %t24, %t25 + br label %logic.from9783 +logic.from9783: + br i1 %t26, label %logic.rhs9784, label %logic.end9785 +logic.rhs9784: + %t27 = load i64, ptr %a4 + %t28 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 + %t29 = load i64, ptr %t28 + %t30 = icmp sge i64 %t27, %t29 + br label %logic.rend9786 +logic.rend9786: + br label %logic.end9785 +logic.end9785: + %t31 = phi i1 [ false, %logic.from9783 ], [ %t30, %logic.rend9786 ] + br label %logic.from9787 +logic.from9787: + br i1 %t31, label %logic.rhs9788, label %logic.end9789 +logic.rhs9788: + %t32 = load i64, ptr %a4 + %t33 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 + %t34 = load i64, ptr %t33 + %t35 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 3 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t34, %t36 + %t38 = icmp sle i64 %t32, %t37 + br label %logic.rend9790 +logic.rend9790: + br label %logic.end9789 +logic.end9789: + %t39 = phi i1 [ false, %logic.from9787 ], [ %t38, %logic.rend9790 ] + br label %logic.from9791 +logic.from9791: + br i1 %t39, label %logic.rhs9792, label %logic.end9793 +logic.rhs9792: + %t40 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 0 + %t41 = load { ptr, i64, i64 }, ptr %t40 + %t42 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } %t42, ptr %a44 + %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) + %t46 = icmp ne i32 %t45, 0 + br label %logic.rend9794 +logic.rend9794: + br label %logic.end9793 +logic.end9793: + %t47 = phi i1 [ false, %logic.from9791 ], [ %t46, %logic.rend9794 ] + br i1 %t47, label %then9795, label %endif9797 +then9795: + %t48 = load i64, ptr %a8 + ret i64 %t48 +endif9797: + br label %for.step9779 +for.step9779: + %t49 = load i64, ptr %a8 + %t50 = add i64 %t49, 1 + store i64 %t50, ptr %a8 + br label %for.cond9777 +for.end9780: + ret i64 -1 +} + +define internal %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a10 = alloca i64, align 16 + %a15 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 + %a32 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = load %S.lsp.Analysis, ptr %a1 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a3 + %t8 = load i64, ptr %a4 + %t9 = call i64 @finch.lsp.refAt(%S.lsp.Analysis %t5, { ptr, i64, i64 } %t6, i64 %t7, i64 %t8) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, 0 + br i1 %t12, label %then9798, label %endif9800 +then9798: + %t13 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t13 +endif9800: + %t14 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t14, ptr %a15 + %t16 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6654, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6653, i64 4, i64 0 }, %S.json.Json %t16) + %t17 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t18 = load i64, ptr %a10 + %t19 = load { ptr, i64, i64 }, ptr %t17 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range9801, label %inrange9802 +range9801: + call void @finch_panic_index(ptr @.str.6656, i64 412, i64 %t18, i64 %t20) + unreachable +inrange9802: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds %S.lsp.Ref, ptr %t22, i64 %t18 + %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i32 0, i32 7 + %t25 = load { ptr, i64, i64 }, ptr %t24 + %t26 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t25) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6655, i64 5, i64 0 }, %S.json.Json %t26) + %t27 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t27, ptr %a28 + %t29 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a28, { ptr, i64, i64 } { ptr @.str.6657, i64 8, i64 0 }, %S.json.Json %t29) + %t30 = load %S.json.Json, ptr %a28 + store %S.json.Json %t30, ptr %a31 + call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) + %t33 = load %S.json.Json, ptr %a32 + ret %S.json.Json %t33 +} + +define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a10 = alloca i64, align 16 + %a34 = alloca %S.lsp.Ref, align 16 + %a35 = alloca %S.lsp.Ref, align 16 + %a37 = alloca %S.lsp.Ref, align 16 + %a39 = alloca %S.json.Json, align 16 + %a55 = alloca %S.json.Json, align 16 + %a56 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = load %S.lsp.Analysis, ptr %a1 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a3 + %t8 = load i64, ptr %a4 + %t9 = call i64 @finch.lsp.refAt(%S.lsp.Analysis %t5, { ptr, i64, i64 } %t6, i64 %t7, i64 %t8) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, 0 + br label %logic.from9803 +logic.from9803: + br i1 %t12, label %logic.end9805, label %logic.rhs9804 +logic.rhs9804: + %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t14 = load i64, ptr %a10 + %t15 = load { ptr, i64, i64 }, ptr %t13 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 %t14, %t16 + br i1 %t17, label %range9806, label %inrange9807 +range9806: + call void @finch_panic_index(ptr @.str.6658, i64 420, i64 %t14, i64 %t16) + unreachable +inrange9807: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds %S.lsp.Ref, ptr %t18, i64 %t14 + %t20 = getelementptr inbounds %S.lsp.Ref, ptr %t19, i32 0, i32 4 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = icmp eq i64 %t22, 0 + br label %logic.rend9808 +logic.rend9808: + br label %logic.end9805 +logic.end9805: + %t24 = phi i1 [ true, %logic.from9803 ], [ %t23, %logic.rend9808 ] + br i1 %t24, label %then9809, label %endif9811 +then9809: + %t25 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t25 +endif9811: + %t26 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t27 = load i64, ptr %a10 + %t28 = load { ptr, i64, i64 }, ptr %t26 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 %t27, %t29 + br i1 %t30, label %range9812, label %inrange9813 +range9812: + call void @finch_panic_index(ptr @.str.6659, i64 423, i64 %t27, i64 %t29) + unreachable +inrange9813: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.lsp.Ref, ptr %t31, i64 %t27 + %t33 = load %S.lsp.Ref, ptr %t32 + store %S.lsp.Ref %t33, ptr %a34 + call void @finch.copy.S_lsp_Ref(ptr %a35, ptr %a34) + %t36 = load %S.lsp.Ref, ptr %a35 + store %S.lsp.Ref %t36, ptr %a37 + %t38 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t38, ptr %a39 + %t40 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 4 + %t41 = load { ptr, i64, i64 }, ptr %t40 + %t42 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t41) + %t43 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t42) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6660, i64 3, i64 0 }, %S.json.Json %t43) + %t44 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 + %t45 = load i64, ptr %t44 + %t46 = sub i64 %t45, 1 + %t47 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t48 = load i64, ptr %t47 + %t49 = sub i64 %t48, 1 + %t50 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t51 = load i64, ptr %t50 + %t52 = sub i64 %t51, 1 + %t53 = call %S.json.Json @finch.lsp.range(i64 %t46, i64 %t49, i64 %t52) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6661, i64 5, i64 0 }, %S.json.Json %t53) + %t54 = load %S.json.Json, ptr %a39 + store %S.json.Json %t54, ptr %a55 + call void @finch.copy.S_json_Json(ptr %a56, ptr %a55) + %t57 = load %S.json.Json, ptr %a56 + ret %S.json.Json %t57 +} + +define internal %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.json.Json, align 16 + %a6 = alloca i64, align 16 + %a14 = alloca %S.lsp.FnRec, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca i64, align 16 + %a65 = alloca %S.lsp.StructRec, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca i64, align 16 + %a98 = alloca %S.lsp.EnumRec, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca %S.json.Json, align 16 + %a124 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t3, ptr %a4 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a6 + br label %each.cond9814 +each.cond9814: + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load i64, ptr %a6 + %t10 = icmp slt i64 %t9, %t8 + br i1 %t10, label %each.body9815, label %each.end9817 +each.body9815: + %t11 = load ptr, ptr %t5 + %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %t11, i64 %t9 + %t13 = load %S.lsp.FnRec, ptr %t12 + store %S.lsp.FnRec %t13, ptr %a14 + %t15 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 3 + %t16 = load { ptr, i64, i64 }, ptr %t15 + %t17 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } %t17, ptr %a19 + %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) + %t21 = icmp eq i32 %t20, 0 + br i1 %t21, label %then9818, label %endif9820 +then9818: + br label %each.step9816 +endif9820: + store i64 12, ptr %a22 + %t23 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t27, ptr %a28 + %t29 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 2 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = icmp sgt i64 %t31, 0 + br i1 %t32, label %then9821, label %endif9823 +then9821: + store i64 6, ptr %a22 + %t33 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 2 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.6662, i64 1, i64 0 }, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a35 + %t39 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t38, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t44, ptr %a28 + br label %endif9823 +endif9823: + %t45 = load { ptr, i64, i64 }, ptr %a28 + %t46 = load i64, ptr %a22 + %t47 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 + %t48 = load i64, ptr %t47 + %t49 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 + %t50 = load i64, ptr %t49 + %t51 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 + %t52 = load i64, ptr %t51 + %t53 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t45, i64 %t46, i64 %t48, i64 %t50, i64 %t52) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t53) + br label %each.step9816 +each.step9816: + %t54 = load i64, ptr %a6 + %t55 = add i64 %t54, 1 + store i64 %t55, ptr %a6 + br label %each.cond9814 +each.end9817: + %t56 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a57 + br label %each.cond9824 +each.cond9824: + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1 + %t59 = load i64, ptr %t58 + %t60 = load i64, ptr %a57 + %t61 = icmp slt i64 %t60, %t59 + br i1 %t61, label %each.body9825, label %each.end9827 +each.body9825: + %t62 = load ptr, ptr %t56 + %t63 = getelementptr inbounds %S.lsp.StructRec, ptr %t62, i64 %t60 + %t64 = load %S.lsp.StructRec, ptr %t63 + store %S.lsp.StructRec %t64, ptr %a65 + %t66 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 2 + %t67 = load { ptr, i64, i64 }, ptr %t66 + %t68 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } %t68, ptr %a70 + %t71 = call i32 @finch_str_eq(ptr %a69, ptr %a70) + %t72 = icmp ne i32 %t71, 0 + br i1 %t72, label %then9828, label %endif9830 +then9828: + %t73 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 1 + %t74 = load { ptr, i64, i64 }, ptr %t73 + %t75 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 3 + %t76 = load i64, ptr %t75 + %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 4 + %t78 = load i64, ptr %t77 + %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 3 + %t80 = load i64, ptr %t79 + %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 5 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i32 0, i32 1 + %t83 = load i64, ptr %t82 + %t84 = add i64 %t80, %t83 + %t85 = add i64 %t84, 1 + %t86 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t74, i64 23, i64 %t76, i64 %t78, i64 %t85) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t86) + br label %endif9830 +endif9830: + br label %each.step9826 +each.step9826: + %t87 = load i64, ptr %a57 + %t88 = add i64 %t87, 1 + store i64 %t88, ptr %a57 + br label %each.cond9824 +each.end9827: + %t89 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a90 + br label %each.cond9831 +each.cond9831: + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 + %t92 = load i64, ptr %t91 + %t93 = load i64, ptr %a90 + %t94 = icmp slt i64 %t93, %t92 + br i1 %t94, label %each.body9832, label %each.end9834 +each.body9832: + %t95 = load ptr, ptr %t89 + %t96 = getelementptr inbounds %S.lsp.EnumRec, ptr %t95, i64 %t93 + %t97 = load %S.lsp.EnumRec, ptr %t96 + store %S.lsp.EnumRec %t97, ptr %a98 + %t99 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 2 + %t100 = load { ptr, i64, i64 }, ptr %t99 + %t101 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } %t101, ptr %a103 + %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) + %t105 = icmp ne i32 %t104, 0 + br i1 %t105, label %then9835, label %endif9837 +then9835: + %t106 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 1 + %t107 = load { ptr, i64, i64 }, ptr %t106 + %t108 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 3 + %t109 = load i64, ptr %t108 + %t110 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 4 + %t111 = load i64, ptr %t110 + %t112 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 3 + %t113 = load i64, ptr %t112 + %t114 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 5 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = add i64 %t113, %t116 + %t118 = add i64 %t117, 1 + %t119 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t107, i64 10, i64 %t109, i64 %t111, i64 %t118) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t119) + br label %endif9837 +endif9837: + br label %each.step9833 +each.step9833: + %t120 = load i64, ptr %a90 + %t121 = add i64 %t120, 1 + store i64 %t121, ptr %a90 + br label %each.cond9831 +each.end9834: + %t122 = load %S.json.Json, ptr %a4 + store %S.json.Json %t122, ptr %a123 + call void @finch.copy.S_json_Json(ptr %a124, ptr %a123) + %t125 = load %S.json.Json, ptr %a124 + ret %S.json.Json %t125 +} + +define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a7 = alloca %S.json.Json, align 16 + %a13 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a29 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t6, ptr %a7 + %t8 = load { ptr, i64, i64 }, ptr %a1 + %t9 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t8) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6663, i64 4, i64 0 }, %S.json.Json %t9) + %t10 = load i64, ptr %a2 + %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, %S.json.Json %t11) + %t12 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t12, ptr %a13 + %t14 = load i64, ptr %a3 + %t15 = sub i64 %t14, 1 + %t16 = call %S.json.Json @finch.lsp.position(i64 %t15, i64 0) + call void @finch.json.Json.set(ptr %a13, { ptr, i64, i64 } { ptr @.str.6665, i64 5, i64 0 }, %S.json.Json %t16) + %t17 = load i64, ptr %a5 + %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) + call void @finch.json.Json.set(ptr %a13, { ptr, i64, i64 } { ptr @.str.6666, i64 3, i64 0 }, %S.json.Json %t18) + %t19 = load %S.json.Json, ptr %a13 + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6667, i64 5, i64 0 }, %S.json.Json %t19) + %t20 = load i64, ptr %a3 + %t21 = sub i64 %t20, 1 + %t22 = load i64, ptr %a4 + %t23 = sub i64 %t22, 1 + %t24 = load i64, ptr %a4 + %t25 = sub i64 %t24, 1 + %t26 = call %S.json.Json @finch.lsp.range(i64 %t21, i64 %t23, i64 %t25) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6668, i64 14, i64 0 }, %S.json.Json %t26) + %t27 = load %S.json.Json, ptr %a7 + store %S.json.Json %t27, ptr %a28 + call void @finch.copy.S_json_Json(ptr %a29, ptr %a28) + %t30 = load %S.json.Json, ptr %a29 + ret %S.json.Json %t30 +} + +define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca %S.json.Json, align 16 + %a20 = alloca %S.json.Json, align 16 + %a26 = alloca %S.json.Json, align 16 + %a27 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a1 + %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6669, i64 5, i64 0 }, %S.json.Json %t8) + %t9 = load i64, ptr %a2 + %t10 = call %S.json.Json @finch.lsp.num(i64 %t9) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6670, i64 4, i64 0 }, %S.json.Json %t10) + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = icmp sgt i64 %t12, 0 + br i1 %t13, label %then9838, label %endif9840 +then9838: + %t14 = load { ptr, i64, i64 }, ptr %a3 + %t15 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t14) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6671, i64 6, i64 0 }, %S.json.Json %t15) + br label %endif9840 +endif9840: + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = icmp sgt i64 %t17, 0 + br i1 %t18, label %then9841, label %endif9843 +then9841: + %t19 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t19, ptr %a20 + %t21 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6673, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a20, { ptr, i64, i64 } { ptr @.str.6672, i64 4, i64 0 }, %S.json.Json %t21) + %t22 = load { ptr, i64, i64 }, ptr %a4 + %t23 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t22) + call void @finch.json.Json.set(ptr %a20, { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, %S.json.Json %t23) + %t24 = load %S.json.Json, ptr %a20 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6675, i64 13, i64 0 }, %S.json.Json %t24) + br label %endif9843 +endif9843: + %t25 = load %S.json.Json, ptr %a6 + store %S.json.Json %t25, ptr %a26 + call void @finch.copy.S_json_Json(ptr %a27, ptr %a26) + %t28 = load %S.json.Json, ptr %a27 + ret %S.json.Json %t28 +} + +define internal i1 @finch.lsp.isWordChar(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 97 + br label %logic.from9844 +logic.from9844: + br i1 %t3, label %logic.rhs9845, label %logic.end9846 +logic.rhs9845: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 122 + br label %logic.rend9847 +logic.rend9847: + br label %logic.end9846 +logic.end9846: + %t6 = phi i1 [ false, %logic.from9844 ], [ %t5, %logic.rend9847 ] + br label %logic.from9848 +logic.from9848: + br i1 %t6, label %logic.end9850, label %logic.rhs9849 +logic.rhs9849: + %t7 = load i8, ptr %a1 + %t8 = icmp uge i8 %t7, 65 + br label %logic.from9851 +logic.from9851: + br i1 %t8, label %logic.rhs9852, label %logic.end9853 +logic.rhs9852: + %t9 = load i8, ptr %a1 + %t10 = icmp ule i8 %t9, 90 + br label %logic.rend9854 +logic.rend9854: + br label %logic.end9853 +logic.end9853: + %t11 = phi i1 [ false, %logic.from9851 ], [ %t10, %logic.rend9854 ] + br label %logic.rend9855 +logic.rend9855: + br label %logic.end9850 +logic.end9850: + %t12 = phi i1 [ true, %logic.from9848 ], [ %t11, %logic.rend9855 ] + br label %logic.from9856 +logic.from9856: + br i1 %t12, label %logic.end9858, label %logic.rhs9857 +logic.rhs9857: + %t13 = load i8, ptr %a1 + %t14 = icmp uge i8 %t13, 48 + br label %logic.from9859 +logic.from9859: + br i1 %t14, label %logic.rhs9860, label %logic.end9861 +logic.rhs9860: + %t15 = load i8, ptr %a1 + %t16 = icmp ule i8 %t15, 57 + br label %logic.rend9862 +logic.rend9862: + br label %logic.end9861 +logic.end9861: + %t17 = phi i1 [ false, %logic.from9859 ], [ %t16, %logic.rend9862 ] + br label %logic.rend9863 +logic.rend9863: + br label %logic.end9858 +logic.end9858: + %t18 = phi i1 [ true, %logic.from9856 ], [ %t17, %logic.rend9863 ] + br label %logic.from9864 +logic.from9864: + br i1 %t18, label %logic.end9866, label %logic.rhs9865 +logic.rhs9865: + %t19 = load i8, ptr %a1 + %t20 = icmp eq i8 %t19, 95 + br label %logic.rend9867 +logic.rend9867: + br label %logic.end9866 +logic.end9866: + %t21 = phi i1 [ true, %logic.from9864 ], [ %t20, %logic.rend9867 ] + ret i1 %t21 +} + +define internal void @finch.lsp.methodItems(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca %S.docs.Doc, align 16 + %a12 = alloca i64, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond9868 +each.cond9868: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body9869, label %each.end9871 +each.body9869: + %t8 = load ptr, ptr %a2 + %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 + %t10 = load %S.docs.Doc, ptr %t9 + store %S.docs.Doc %t10, ptr %a11 + store i64 2, ptr %a12 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 1 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6677, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_starts(ptr %a15, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %then9872, label %endif9874 +then9872: + store i64 5, ptr %a12 + br label %endif9874 +endif9874: + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic9875, label %ok9876 +panic9875: + call void @finch_panic(ptr @.str.6678, i64 497, ptr @.str.6679) + unreachable +ok9876: + %t22 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + %t24 = load i64, ptr %a12 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 1 + %t26 = load { ptr, i64, i64 }, ptr %t25 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 2 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t23, i64 %t24, { ptr, i64, i64 } %t26, { ptr, i64, i64 } %t28) + call void @finch.json.Json.push(ptr %t20, %S.json.Json %t29) + br label %each.step9870 +each.step9870: + %t30 = load i64, ptr %a3 + %t31 = add i64 %t30, 1 + store i64 %t31, ptr %a3 + br label %each.cond9868 +each.end9871: + ret void +} + +define internal %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca %S.lsp.VarRec, align 16 + %a7 = alloca i64, align 16 + %a15 = alloca %S.lsp.VarRec, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca %S.lsp.VarRec, align 16 + %a44 = alloca %S.lsp.VarRec, align 16 + %a49 = alloca %S.lsp.VarRec, align 16 + %a50 = alloca %S.lsp.VarRec, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store %S.lsp.VarRec zeroinitializer, ptr %a5 + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a7 + br label %each.cond9877 +each.cond9877: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load i64, ptr %a7 + %t11 = icmp slt i64 %t10, %t9 + br i1 %t11, label %each.body9878, label %each.end9880 +each.body9878: + %t12 = load ptr, ptr %t6 + %t13 = getelementptr inbounds %S.lsp.VarRec, ptr %t12, i64 %t10 + %t14 = load %S.lsp.VarRec, ptr %t13 + store %S.lsp.VarRec %t14, ptr %a15 + %t16 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 0 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } %t18, ptr %a20 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br label %logic.from9881 +logic.from9881: + br i1 %t22, label %logic.rhs9882, label %logic.end9883 +logic.rhs9882: + %t23 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 3 + %t24 = load i64, ptr %t23 + %t25 = load i64, ptr %a4 + %t26 = icmp sle i64 %t24, %t25 + br label %logic.rend9884 +logic.rend9884: + br label %logic.end9883 +logic.end9883: + %t27 = phi i1 [ false, %logic.from9881 ], [ %t26, %logic.rend9884 ] + br label %logic.from9885 +logic.from9885: + br i1 %t27, label %logic.rhs9886, label %logic.end9887 +logic.rhs9886: + %t28 = load i64, ptr %a4 + %t29 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 7 + %t30 = load i64, ptr %t29 + %t31 = add i64 %t30, 1 + %t32 = icmp sle i64 %t28, %t31 + br label %logic.rend9888 +logic.rend9888: + br label %logic.end9887 +logic.end9887: + %t33 = phi i1 [ false, %logic.from9885 ], [ %t32, %logic.rend9888 ] + br label %logic.from9889 +logic.from9889: + br i1 %t33, label %logic.rhs9890, label %logic.end9891 +logic.rhs9890: + %t34 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 5 + %t35 = load { ptr, i64, i64 }, ptr %t34 + %t36 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } %t36, ptr %a38 + %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) + %t40 = icmp ne i32 %t39, 0 + br label %logic.rend9892 +logic.rend9892: + br label %logic.end9891 +logic.end9891: + %t41 = phi i1 [ false, %logic.from9889 ], [ %t40, %logic.rend9892 ] + br i1 %t41, label %then9893, label %endif9895 +then9893: + %t42 = load %S.lsp.VarRec, ptr %a15 + store %S.lsp.VarRec %t42, ptr %a43 + call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) + %t45 = load %S.lsp.VarRec, ptr %a44 + store %S.lsp.VarRec %t45, ptr %a5 + br label %endif9895 +endif9895: + br label %each.step9879 +each.step9879: + %t46 = load i64, ptr %a7 + %t47 = add i64 %t46, 1 + store i64 %t47, ptr %a7 + br label %each.cond9877 +each.end9880: + %t48 = load %S.lsp.VarRec, ptr %a5 + store %S.lsp.VarRec %t48, ptr %a49 + call void @finch.copy.S_lsp_VarRec(ptr %a50, ptr %a49) + %t51 = load %S.lsp.VarRec, ptr %a50 + ret %S.lsp.VarRec %t51 +} + +define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a7 = alloca %S.json.Json, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca i64, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a56 = alloca i1, align 16 + %a60 = alloca i64, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca i1, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca i64, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca i64, align 16 + %a123 = alloca i64, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca i64, align 16 + %a144 = alloca %S.lsp.FnRec, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca i64, align 16 + %a173 = alloca %S.lsp.StructRec, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca i64, align 16 + %a201 = alloca %S.lsp.EnumRec, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca i64, align 16 + %a231 = alloca %S.lsp.EnumRec, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca i64, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a306 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a326 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca i64, align 16 + %a365 = alloca %S.lsp.StructRec, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca i64, align 16 + %a401 = alloca i64, align 16 + %a409 = alloca %S.lsp.FnRec, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca %S.lsp.Names, align 16 + %a428 = alloca i64, align 16 + %a436 = alloca %S.lsp.VarRec, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca i64, align 16 + %a475 = alloca %S.lsp.FnRec, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %a483 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca i64, align 16 + %a507 = alloca %S.lsp.StructRec, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca i64, align 16 + %a538 = alloca %S.lsp.EnumRec, align 16 + %a541 = alloca { ptr, i64, i64 }, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca i64, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca i64, align 16 + %a586 = alloca %S.docs.Doc, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a609 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca i64, align 16 + %a626 = alloca { ptr, i64, i64 }, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t6, ptr %a7 + %t8 = load { ptr, i64, i64 }, ptr %a2 + %t9 = load i64, ptr %a4 + %t10 = call { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %t8, i64 %t9) + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load i64, ptr %a5 + %t13 = sub i64 %t12, 1 + store i64 %t13, ptr %a14 + %t15 = load i64, ptr %a14 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = icmp sgt i64 %t15, %t17 + br i1 %t18, label %then9896, label %endif9898 +then9896: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t20 = load i64, ptr %t19 + store i64 %t20, ptr %a14 + br label %endif9898 +endif9898: + %t21 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t21, ptr %a22 + %t24 = load i64, ptr %a14 + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.6680, i64 519) + %t25 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t25, ptr %a26 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 + %t28 = load i64, ptr %t27 + store i64 %t28, ptr %a29 + br label %while.cond9899 +while.cond9899: + %t30 = load i64, ptr %a29 + %t31 = icmp sgt i64 %t30, 0 + br label %logic.from9902 +logic.from9902: + br i1 %t31, label %logic.rhs9903, label %logic.end9904 +logic.rhs9903: + %t32 = load i64, ptr %a29 + %t33 = sub i64 %t32, 1 + %t34 = load { ptr, i64, i64 }, ptr %a26 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range9905, label %inrange9906 +range9905: + call void @finch_panic_index(ptr @.str.6681, i64 522, i64 %t33, i64 %t35) + unreachable +inrange9906: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds i8, ptr %t37, i64 %t33 + %t39 = load i8, ptr %t38 + %t40 = call i1 @finch.lsp.isWordChar(i8 %t39) + br label %logic.rend9907 +logic.rend9907: + br label %logic.end9904 +logic.end9904: + %t41 = phi i1 [ false, %logic.from9902 ], [ %t40, %logic.rend9907 ] + br i1 %t41, label %while.body9900, label %while.end9901 +while.body9900: + %t42 = load i64, ptr %a29 + %t43 = sub i64 %t42, 1 + store i64 %t43, ptr %a29 + br label %while.cond9899 +while.end9901: + %t44 = load i64, ptr %a29 + %t45 = icmp sgt i64 %t44, 0 + br label %logic.from9908 +logic.from9908: + br i1 %t45, label %logic.rhs9909, label %logic.end9910 +logic.rhs9909: + %t46 = load i64, ptr %a29 + %t47 = sub i64 %t46, 1 + %t48 = load { ptr, i64, i64 }, ptr %a26 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range9911, label %inrange9912 +range9911: + call void @finch_panic_index(ptr @.str.6682, i64 525, i64 %t47, i64 %t49) + unreachable +inrange9912: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t47 + %t53 = load i8, ptr %t52 + %t54 = icmp eq i8 %t53, 46 + br label %logic.rend9913 +logic.rend9913: + br label %logic.end9910 +logic.end9910: + %t55 = phi i1 [ false, %logic.from9908 ], [ %t54, %logic.rend9913 ] + store i1 %t55, ptr %a56 + %t57 = load i1, ptr %a56 + br i1 %t57, label %then9914, label %endif9916 +then9914: + %t58 = load i64, ptr %a29 + %t59 = sub i64 %t58, 1 + store i64 %t59, ptr %a60 + br label %while.cond9917 +while.cond9917: + %t61 = load i64, ptr %a60 + %t62 = icmp sgt i64 %t61, 0 + br label %logic.from9920 +logic.from9920: + br i1 %t62, label %logic.rhs9921, label %logic.end9922 +logic.rhs9921: + %t63 = load i64, ptr %a60 + %t64 = sub i64 %t63, 1 + %t65 = load { ptr, i64, i64 }, ptr %a26 + %t66 = extractvalue { ptr, i64, i64 } %t65, 1 + %t67 = icmp uge i64 %t64, %t66 + br i1 %t67, label %range9923, label %inrange9924 +range9923: + call void @finch_panic_index(ptr @.str.6683, i64 528, i64 %t64, i64 %t66) + unreachable +inrange9924: + %t68 = extractvalue { ptr, i64, i64 } %t65, 0 + %t69 = getelementptr inbounds i8, ptr %t68, i64 %t64 + %t70 = load i8, ptr %t69 + %t71 = call i1 @finch.lsp.isWordChar(i8 %t70) + br label %logic.from9925 +logic.from9925: + br i1 %t71, label %logic.end9927, label %logic.rhs9926 +logic.rhs9926: + %t72 = load i64, ptr %a60 + %t73 = sub i64 %t72, 1 + %t74 = load { ptr, i64, i64 }, ptr %a26 + %t75 = extractvalue { ptr, i64, i64 } %t74, 1 + %t76 = icmp uge i64 %t73, %t75 + br i1 %t76, label %range9928, label %inrange9929 +range9928: + call void @finch_panic_index(ptr @.str.6684, i64 528, i64 %t73, i64 %t75) + unreachable +inrange9929: + %t77 = extractvalue { ptr, i64, i64 } %t74, 0 + %t78 = getelementptr inbounds i8, ptr %t77, i64 %t73 + %t79 = load i8, ptr %t78 + %t80 = icmp eq i8 %t79, 91 + br label %logic.rend9930 +logic.rend9930: + br label %logic.end9927 +logic.end9927: + %t81 = phi i1 [ true, %logic.from9925 ], [ %t80, %logic.rend9930 ] + br label %logic.from9931 +logic.from9931: + br i1 %t81, label %logic.end9933, label %logic.rhs9932 +logic.rhs9932: + %t82 = load i64, ptr %a60 + %t83 = sub i64 %t82, 1 + %t84 = load { ptr, i64, i64 }, ptr %a26 + %t85 = extractvalue { ptr, i64, i64 } %t84, 1 + %t86 = icmp uge i64 %t83, %t85 + br i1 %t86, label %range9934, label %inrange9935 +range9934: + call void @finch_panic_index(ptr @.str.6685, i64 528, i64 %t83, i64 %t85) + unreachable +inrange9935: + %t87 = extractvalue { ptr, i64, i64 } %t84, 0 + %t88 = getelementptr inbounds i8, ptr %t87, i64 %t83 + %t89 = load i8, ptr %t88 + %t90 = icmp eq i8 %t89, 93 + br label %logic.rend9936 +logic.rend9936: + br label %logic.end9933 +logic.end9933: + %t91 = phi i1 [ true, %logic.from9931 ], [ %t90, %logic.rend9936 ] + br label %logic.rend9937 +logic.rend9937: + br label %logic.end9922 +logic.end9922: + %t92 = phi i1 [ false, %logic.from9920 ], [ %t91, %logic.rend9937 ] + br i1 %t92, label %while.body9918, label %while.end9919 +while.body9918: + %t93 = load i64, ptr %a60 + %t94 = sub i64 %t93, 1 + store i64 %t94, ptr %a60 + br label %while.cond9917 +while.end9919: + %t95 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t95, ptr %a96 + %t98 = load i64, ptr %a60 + %t99 = load i64, ptr %a29 + %t100 = sub i64 %t99, 1 + call void @finch_str_sub(ptr %a97, ptr %a96, i64 %t98, i64 %t100, ptr @.str.6686, i64 531) + %t101 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t101, ptr %a102 + store i1 false, ptr %a103 + %t104 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t104, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.6688, i64 1, i64 0 }, ptr %a107 + %t108 = call i64 @finch_str_find(ptr %a105, ptr %a107) + store i64 %t108, ptr %a109 + %t110 = load i64, ptr %a109 + %t111 = icmp sge i64 %t110, 0 + br i1 %t111, label %then9938, label %endif9940 +then9938: + %t112 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t112, ptr %a113 + %t115 = load i64, ptr %a109 + call void @finch_str_sub(ptr %a114, ptr %a113, i64 0, i64 %t115, ptr @.str.6689, i64 535) + %t116 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t116, ptr %a102 + store i1 true, ptr %a103 + br label %endif9940 +endif9940: + %t117 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i32 0, i32 1 + %t119 = load { ptr, i64, i64 }, ptr %a102 + store i64 -1, ptr %a120 + %t121 = load i64, ptr %t118 + %t122 = load ptr, ptr %t117 + store i64 0, ptr %a123 + br label %find.cond9941 +find.cond9941: + %t124 = load i64, ptr %a123 + %t125 = icmp slt i64 %t124, %t121 + br i1 %t125, label %find.body9942, label %find.end9945 +find.body9942: + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t124 + %t127 = load { ptr, i64, i64 }, ptr %t126 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } %t119, ptr %a129 + %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + br i1 %t131, label %find.hit9943, label %find.next9944 +find.hit9943: + store i64 %t124, ptr %a120 + br label %find.end9945 +find.next9944: + %t132 = add i64 %t124, 1 + store i64 %t132, ptr %a123 + br label %find.cond9941 +find.end9945: + %t133 = load i64, ptr %a120 + %t134 = icmp sge i64 %t133, 0 + br i1 %t134, label %then9946, label %endif9948 +then9946: + %t135 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a136 + br label %each.cond9949 +each.cond9949: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = load i64, ptr %a136 + %t140 = icmp slt i64 %t139, %t138 + br i1 %t140, label %each.body9950, label %each.end9952 +each.body9950: + %t141 = load ptr, ptr %t135 + %t142 = getelementptr inbounds %S.lsp.FnRec, ptr %t141, i64 %t139 + %t143 = load %S.lsp.FnRec, ptr %t142 + store %S.lsp.FnRec %t143, ptr %a144 + %t145 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 0 + %t146 = load { ptr, i64, i64 }, ptr %t145 + %t147 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } %t147, ptr %a149 + %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) + %t151 = icmp ne i32 %t150, 0 + br label %logic.from9953 +logic.from9953: + br i1 %t151, label %logic.rhs9954, label %logic.end9955 +logic.rhs9954: + %t152 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 2 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 + %t154 = load i64, ptr %t153 + %t155 = icmp eq i64 %t154, 0 + br label %logic.rend9956 +logic.rend9956: + br label %logic.end9955 +logic.end9955: + %t156 = phi i1 [ false, %logic.from9953 ], [ %t155, %logic.rend9956 ] + br i1 %t156, label %then9957, label %endif9959 +then9957: + %t157 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 1 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 7 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t158, i64 3, { ptr, i64, i64 } %t160, { ptr, i64, i64 } { ptr @.str.6690, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t161) + br label %endif9959 +endif9959: + br label %each.step9951 +each.step9951: + %t162 = load i64, ptr %a136 + %t163 = add i64 %t162, 1 + store i64 %t163, ptr %a136 + br label %each.cond9949 +each.end9952: + %t164 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a165 + br label %each.cond9960 +each.cond9960: + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 + %t167 = load i64, ptr %t166 + %t168 = load i64, ptr %a165 + %t169 = icmp slt i64 %t168, %t167 + br i1 %t169, label %each.body9961, label %each.end9963 +each.body9961: + %t170 = load ptr, ptr %t164 + %t171 = getelementptr inbounds %S.lsp.StructRec, ptr %t170, i64 %t168 + %t172 = load %S.lsp.StructRec, ptr %t171 + store %S.lsp.StructRec %t172, ptr %a173 + %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 0 + %t175 = load { ptr, i64, i64 }, ptr %t174 + %t176 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } %t176, ptr %a178 + %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %then9964, label %endif9966 +then9964: + %t181 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + %t183 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 1 + %t184 = load { ptr, i64, i64 }, ptr %t183 + store { ptr, i64, i64 } { ptr @.str.6691, i64 7, i64 0 }, ptr %a186 + store { ptr, i64, i64 } %t184, ptr %a187 + call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187) + %t188 = load { ptr, i64, i64 }, ptr %a185 + %t189 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t182, i64 22, { ptr, i64, i64 } %t188, { ptr, i64, i64 } { ptr @.str.6692, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t189) + br label %endif9966 +endif9966: + br label %each.step9962 +each.step9962: + %t190 = load i64, ptr %a165 + %t191 = add i64 %t190, 1 + store i64 %t191, ptr %a165 + br label %each.cond9960 +each.end9963: + %t192 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a193 + br label %each.cond9967 +each.cond9967: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i32 0, i32 1 + %t195 = load i64, ptr %t194 + %t196 = load i64, ptr %a193 + %t197 = icmp slt i64 %t196, %t195 + br i1 %t197, label %each.body9968, label %each.end9970 +each.body9968: + %t198 = load ptr, ptr %t192 + %t199 = getelementptr inbounds %S.lsp.EnumRec, ptr %t198, i64 %t196 + %t200 = load %S.lsp.EnumRec, ptr %t199 + store %S.lsp.EnumRec %t200, ptr %a201 + %t202 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 0 + %t203 = load { ptr, i64, i64 }, ptr %t202 + %t204 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } %t204, ptr %a206 + %t207 = call i32 @finch_str_eq(ptr %a205, ptr %a206) + %t208 = icmp ne i32 %t207, 0 + br i1 %t208, label %then9971, label %endif9973 +then9971: + %t209 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 1 + %t210 = load { ptr, i64, i64 }, ptr %t209 + %t211 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 1 + %t212 = load { ptr, i64, i64 }, ptr %t211 + store { ptr, i64, i64 } { ptr @.str.6693, i64 5, i64 0 }, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a213 + %t217 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t210, i64 13, { ptr, i64, i64 } %t216, { ptr, i64, i64 } { ptr @.str.6694, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t217) + br label %endif9973 +endif9973: + br label %each.step9969 +each.step9969: + %t218 = load i64, ptr %a193 + %t219 = add i64 %t218, 1 + store i64 %t219, ptr %a193 + br label %each.cond9967 +each.end9970: + %t220 = load %S.json.Json, ptr %a7 + %t221 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t220) + ret %S.json.Json %t221 +endif9948: + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a223 + br label %each.cond9974 +each.cond9974: + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = load i64, ptr %a223 + %t227 = icmp slt i64 %t226, %t225 + br i1 %t227, label %each.body9975, label %each.end9977 +each.body9975: + %t228 = load ptr, ptr %t222 + %t229 = getelementptr inbounds %S.lsp.EnumRec, ptr %t228, i64 %t226 + %t230 = load %S.lsp.EnumRec, ptr %t229 + store %S.lsp.EnumRec %t230, ptr %a231 + %t232 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 1 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } %t234, ptr %a236 + %t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236) + %t238 = icmp ne i32 %t237, 0 + br label %logic.from9978 +logic.from9978: + br i1 %t238, label %logic.rhs9979, label %logic.end9980 +logic.rhs9979: + %t239 = load %S.lsp.Analysis, ptr %a1 + %t240 = load { ptr, i64, i64 }, ptr %a3 + %t241 = load { ptr, i64, i64 }, ptr %a102 + %t242 = load i64, ptr %a4 + %t243 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t239, { ptr, i64, i64 } %t240, { ptr, i64, i64 } %t241, i64 %t242) + %t244 = extractvalue %S.lsp.VarRec %t243, 0 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = extractvalue { ptr, i64, i64 } %t247, 1 + %t249 = icmp eq i64 %t248, 0 + br label %logic.rend9981 +logic.rend9981: + br label %logic.end9980 +logic.end9980: + %t250 = phi i1 [ false, %logic.from9978 ], [ %t249, %logic.rend9981 ] + br i1 %t250, label %then9982, label %endif9984 +then9982: + %t251 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 5 + store i64 0, ptr %a252 + br label %each.cond9985 +each.cond9985: + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t251, i32 0, i32 1 + %t254 = load i64, ptr %t253 + %t255 = load i64, ptr %a252 + %t256 = icmp slt i64 %t255, %t254 + br i1 %t256, label %each.body9986, label %each.end9988 +each.body9986: + %t257 = load ptr, ptr %t251 + %t258 = getelementptr inbounds { ptr, i64, i64 }, ptr %t257, i64 %t255 + %t259 = load { ptr, i64, i64 }, ptr %t258 + store { ptr, i64, i64 } %t259, ptr %a260 + %t261 = load { ptr, i64, i64 }, ptr %a260 + %t262 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 1 + %t263 = load { ptr, i64, i64 }, ptr %t262 + store { ptr, i64, i64 } %t263, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.6695, i64 1, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a264 + %t268 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t267, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + %t273 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t261, i64 20, { ptr, i64, i64 } %t272, { ptr, i64, i64 } { ptr @.str.6696, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t273) + br label %each.step9987 +each.step9987: + %t274 = load i64, ptr %a252 + %t275 = add i64 %t274, 1 + store i64 %t275, ptr %a252 + br label %each.cond9985 +each.end9988: + %t276 = load %S.json.Json, ptr %a7 + %t277 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t276) + ret %S.json.Json %t277 +endif9984: + br label %each.step9976 +each.step9976: + %t278 = load i64, ptr %a223 + %t279 = add i64 %t278, 1 + store i64 %t279, ptr %a223 + br label %each.cond9974 +each.end9977: + %t280 = load %S.lsp.Analysis, ptr %a1 + %t281 = load { ptr, i64, i64 }, ptr %a3 + %t282 = load { ptr, i64, i64 }, ptr %a102 + %t283 = load i64, ptr %a4 + %t284 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t280, { ptr, i64, i64 } %t281, { ptr, i64, i64 } %t282, i64 %t283) + %t285 = extractvalue %S.lsp.VarRec %t284, 1 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_copy(ptr %a287, ptr %a286) + %t288 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t288, ptr %a289 + %t290 = load i1, ptr %a103 + br label %logic.from9989 +logic.from9989: + br i1 %t290, label %logic.rhs9990, label %logic.end9991 +logic.rhs9990: + %t291 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.6698, i64 2, i64 0 }, ptr %a294 + %t295 = call i32 @finch_str_starts(ptr %a292, ptr %a294) + %t296 = icmp ne i32 %t295, 0 + br label %logic.rend9992 +logic.rend9992: + br label %logic.end9991 +logic.end9991: + %t297 = phi i1 [ false, %logic.from9989 ], [ %t296, %logic.rend9992 ] + br i1 %t297, label %then9993, label %else9994 +then9993: + %t298 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t298, ptr %a299 + %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a289, i32 0, i32 1 + %t302 = load i64, ptr %t301 + call void @finch_str_sub(ptr %a300, ptr %a299, i64 2, i64 %t302, ptr @.str.6699, i64 569) + %t303 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t303, ptr %a289 + br label %endif9995 +else9994: + %t304 = load i1, ptr %a103 + br label %logic.from9996 +logic.from9996: + br i1 %t304, label %logic.rhs9997, label %logic.end9998 +logic.rhs9997: + %t305 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t305, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.6700, i64 3, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) + %t309 = icmp ne i32 %t308, 0 + br label %logic.rend9999 +logic.rend9999: + br label %logic.end9998 +logic.end9998: + %t310 = phi i1 [ false, %logic.from9996 ], [ %t309, %logic.rend9999 ] + br i1 %t310, label %then10000, label %endif10002 +then10000: + store { ptr, i64, i64 } { ptr @.str.6701, i64 4, i64 0 }, ptr %a289 + br label %endif10002 +endif10002: + br label %endif9995 +endif9995: + %t311 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t311, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.6703, i64 4, i64 0 }, ptr %a314 + %t315 = call i32 @finch_str_starts(ptr %a312, ptr %a314) + %t316 = icmp ne i32 %t315, 0 + br label %logic.from10003 +logic.from10003: + br i1 %t316, label %logic.rhs10004, label %logic.end10005 +logic.rhs10004: + %t317 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t317, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.6705, i64 1, i64 0 }, ptr %a320 + %t321 = call i32 @finch_str_ends(ptr %a318, ptr %a320) + %t322 = icmp ne i32 %t321, 0 + br label %logic.rend10006 +logic.rend10006: + br label %logic.end10005 +logic.end10005: + %t323 = phi i1 [ false, %logic.from10003 ], [ %t322, %logic.rend10006 ] + br i1 %t323, label %then10007, label %endif10009 +then10007: + %t324 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t324, ptr %a325 + %t327 = getelementptr inbounds { ptr, i64, i64 }, ptr %a289, i32 0, i32 1 + %t328 = load i64, ptr %t327 + %t329 = sub i64 %t328, 1 + call void @finch_str_sub(ptr %a326, ptr %a325, i64 4, i64 %t329, ptr @.str.6706, i64 574) + %t330 = load { ptr, i64, i64 }, ptr %a326 + store { ptr, i64, i64 } %t330, ptr %a289 + br label %endif10009 +endif10009: + %t331 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t331, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.6708, i64 2, i64 0 }, ptr %a334 + %t335 = call i32 @finch_str_starts(ptr %a332, ptr %a334) + %t336 = icmp ne i32 %t335, 0 + br i1 %t336, label %then10010, label %else10011 +then10010: + %t337 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t337) + br label %endif10012 +else10011: + %t338 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t338, ptr %a339 + store { ptr, i64, i64 } { ptr @.str.6709, i64 3, i64 0 }, ptr %a340 + %t341 = call i32 @finch_str_eq(ptr %a339, ptr %a340) + %t342 = icmp ne i32 %t341, 0 + br i1 %t342, label %then10013, label %else10014 +then10013: + %t343 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t343) + br label %endif10015 +else10014: + %t344 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t344, ptr %a345 + store { ptr, i64, i64 } { ptr @.str.6711, i64 4, i64 0 }, ptr %a347 + %t348 = call i32 @finch_str_starts(ptr %a345, ptr %a347) + %t349 = icmp ne i32 %t348, 0 + br i1 %t349, label %then10016, label %else10017 +then10016: + %t350 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t350) + br label %endif10018 +else10017: + %t351 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t351, ptr %a352 + call void @finch_str_copy(ptr %a353, ptr %a352) + %t354 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t354, ptr %a355 + %t356 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a357 + br label %each.cond10019 +each.cond10019: + %t358 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 + %t359 = load i64, ptr %t358 + %t360 = load i64, ptr %a357 + %t361 = icmp slt i64 %t360, %t359 + br i1 %t361, label %each.body10020, label %each.end10022 +each.body10020: + %t362 = load ptr, ptr %t356 + %t363 = getelementptr inbounds %S.lsp.StructRec, ptr %t362, i64 %t360 + %t364 = load %S.lsp.StructRec, ptr %t363 + store %S.lsp.StructRec %t364, ptr %a365 + %t366 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 1 + %t367 = load { ptr, i64, i64 }, ptr %t366 + %t368 = load { ptr, i64, i64 }, ptr %a355 + store { ptr, i64, i64 } %t367, ptr %a369 + store { ptr, i64, i64 } %t368, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br i1 %t372, label %then10023, label %endif10025 +then10023: + %t373 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 5 + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %t373, i32 0, i32 1 + %t375 = load i64, ptr %t374 + store i64 0, ptr %a376 + br label %for.cond10026 +for.cond10026: + %t377 = load i64, ptr %a376 + %t378 = icmp slt i64 %t377, %t375 + br i1 %t378, label %for.body10027, label %for.end10029 +for.body10027: + %t379 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 5 + %t380 = load i64, ptr %a376 + %t381 = load { ptr, i64, i64 }, ptr %t379 + %t382 = extractvalue { ptr, i64, i64 } %t381, 1 + %t383 = icmp uge i64 %t380, %t382 + br i1 %t383, label %range10030, label %inrange10031 +range10030: + call void @finch_panic_index(ptr @.str.6712, i64 587, i64 %t380, i64 %t382) + unreachable +inrange10031: + %t384 = extractvalue { ptr, i64, i64 } %t381, 0 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 + %t386 = load { ptr, i64, i64 }, ptr %t385 + %t387 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 6 + %t388 = load i64, ptr %a376 + %t389 = load { ptr, i64, i64 }, ptr %t387 + %t390 = extractvalue { ptr, i64, i64 } %t389, 1 + %t391 = icmp uge i64 %t388, %t390 + br i1 %t391, label %range10032, label %inrange10033 +range10032: + call void @finch_panic_index(ptr @.str.6713, i64 587, i64 %t388, i64 %t390) + unreachable +inrange10033: + %t392 = extractvalue { ptr, i64, i64 } %t389, 0 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i64 %t388 + %t394 = load { ptr, i64, i64 }, ptr %t393 + %t395 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t386, i64 5, { ptr, i64, i64 } %t394, { ptr, i64, i64 } { ptr @.str.6714, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t395) + br label %for.step10028 +for.step10028: + %t396 = load i64, ptr %a376 + %t397 = add i64 %t396, 1 + store i64 %t397, ptr %a376 + br label %for.cond10026 +for.end10029: + br label %endif10025 +endif10025: + br label %each.step10021 +each.step10021: + %t398 = load i64, ptr %a357 + %t399 = add i64 %t398, 1 + store i64 %t399, ptr %a357 + br label %each.cond10019 +each.end10022: + %t400 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a401 + br label %each.cond10034 +each.cond10034: + %t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t400, i32 0, i32 1 + %t403 = load i64, ptr %t402 + %t404 = load i64, ptr %a401 + %t405 = icmp slt i64 %t404, %t403 + br i1 %t405, label %each.body10035, label %each.end10037 +each.body10035: + %t406 = load ptr, ptr %t400 + %t407 = getelementptr inbounds %S.lsp.FnRec, ptr %t406, i64 %t404 + %t408 = load %S.lsp.FnRec, ptr %t407 + store %S.lsp.FnRec %t408, ptr %a409 + %t410 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 2 + %t411 = load { ptr, i64, i64 }, ptr %t410 + %t412 = load { ptr, i64, i64 }, ptr %a355 + store { ptr, i64, i64 } %t411, ptr %a413 + store { ptr, i64, i64 } %t412, ptr %a414 + %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) + %t416 = icmp ne i32 %t415, 0 + br i1 %t416, label %then10038, label %endif10040 +then10038: + %t417 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %t417 + %t419 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 7 + %t420 = load { ptr, i64, i64 }, ptr %t419 + %t421 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t418, i64 2, { ptr, i64, i64 } %t420, { ptr, i64, i64 } { ptr @.str.6715, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t421) + br label %endif10040 +endif10040: + br label %each.step10036 +each.step10036: + %t422 = load i64, ptr %a401 + %t423 = add i64 %t422, 1 + store i64 %t423, ptr %a401 + br label %each.cond10034 +each.end10037: + br label %endif10018 +endif10018: + br label %endif10015 +endif10015: + br label %endif10012 +endif10012: + %t424 = load %S.json.Json, ptr %a7 + %t425 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t424) + ret %S.json.Json %t425 +endif9916: + store %S.lsp.Names zeroinitializer, ptr %a426 + %t427 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a428 + br label %each.cond10041 +each.cond10041: + %t429 = getelementptr inbounds { ptr, i64, i64 }, ptr %t427, i32 0, i32 1 + %t430 = load i64, ptr %t429 + %t431 = load i64, ptr %a428 + %t432 = icmp slt i64 %t431, %t430 + br i1 %t432, label %each.body10042, label %each.end10044 +each.body10042: + %t433 = load ptr, ptr %t427 + %t434 = getelementptr inbounds %S.lsp.VarRec, ptr %t433, i64 %t431 + %t435 = load %S.lsp.VarRec, ptr %t434 + store %S.lsp.VarRec %t435, ptr %a436 + %t437 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 3 + %t438 = load i64, ptr %t437 + %t439 = load i64, ptr %a4 + %t440 = icmp sle i64 %t438, %t439 + br label %logic.from10045 +logic.from10045: + br i1 %t440, label %logic.rhs10046, label %logic.end10047 +logic.rhs10046: + %t441 = load i64, ptr %a4 + %t442 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 7 + %t443 = load i64, ptr %t442 + %t444 = add i64 %t443, 1 + %t445 = icmp sle i64 %t441, %t444 + br label %logic.rend10048 +logic.rend10048: + br label %logic.end10047 +logic.end10047: + %t446 = phi i1 [ false, %logic.from10045 ], [ %t445, %logic.rend10048 ] + br label %logic.from10049 +logic.from10049: + br i1 %t446, label %logic.rhs10050, label %logic.end10051 +logic.rhs10050: + %t447 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 5 + %t448 = load { ptr, i64, i64 }, ptr %t447 + %t449 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t448, ptr %a450 + store { ptr, i64, i64 } %t449, ptr %a451 + %t452 = call i32 @finch_str_eq(ptr %a450, ptr %a451) + %t453 = icmp ne i32 %t452, 0 + br label %logic.rend10052 +logic.rend10052: + br label %logic.end10051 +logic.end10051: + %t454 = phi i1 [ false, %logic.from10049 ], [ %t453, %logic.rend10052 ] + br label %logic.from10053 +logic.from10053: + br i1 %t454, label %logic.rhs10054, label %logic.end10055 +logic.rhs10054: + %t455 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 0 + %t456 = load { ptr, i64, i64 }, ptr %t455 + %t457 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t456) + br label %logic.rend10056 +logic.rend10056: + br label %logic.end10055 +logic.end10055: + %t458 = phi i1 [ false, %logic.from10053 ], [ %t457, %logic.rend10056 ] + br i1 %t458, label %then10057, label %endif10059 +then10057: + %t459 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 0 + %t460 = load { ptr, i64, i64 }, ptr %t459 + %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 1 + %t462 = load { ptr, i64, i64 }, ptr %t461 + %t463 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t460, i64 6, { ptr, i64, i64 } %t462, { ptr, i64, i64 } { ptr @.str.6716, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t463) + br label %endif10059 +endif10059: + br label %each.step10043 +each.step10043: + %t464 = load i64, ptr %a428 + %t465 = add i64 %t464, 1 + store i64 %t465, ptr %a428 + br label %each.cond10041 +each.end10044: + %t466 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a467 + br label %each.cond10060 +each.cond10060: + %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i32 0, i32 1 + %t469 = load i64, ptr %t468 + %t470 = load i64, ptr %a467 + %t471 = icmp slt i64 %t470, %t469 + br i1 %t471, label %each.body10061, label %each.end10063 +each.body10061: + %t472 = load ptr, ptr %t466 + %t473 = getelementptr inbounds %S.lsp.FnRec, ptr %t472, i64 %t470 + %t474 = load %S.lsp.FnRec, ptr %t473 + store %S.lsp.FnRec %t474, ptr %a475 + %t476 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 2 + %t477 = getelementptr inbounds { ptr, i64, i64 }, ptr %t476, i32 0, i32 1 + %t478 = load i64, ptr %t477 + %t479 = icmp eq i64 %t478, 0 + br label %logic.from10064 +logic.from10064: + br i1 %t479, label %logic.rhs10065, label %logic.end10066 +logic.rhs10065: + %t480 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 0 + %t481 = load { ptr, i64, i64 }, ptr %t480 + store { ptr, i64, i64 } %t481, ptr %a482 + store { ptr, i64, i64 } { ptr @.str.6717, i64 0, i64 0 }, ptr %a483 + %t484 = call i32 @finch_str_eq(ptr %a482, ptr %a483) + %t485 = icmp ne i32 %t484, 0 + br label %logic.rend10067 +logic.rend10067: + br label %logic.end10066 +logic.end10066: + %t486 = phi i1 [ false, %logic.from10064 ], [ %t485, %logic.rend10067 ] + br label %logic.from10068 +logic.from10068: + br i1 %t486, label %logic.rhs10069, label %logic.end10070 +logic.rhs10069: + %t487 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 1 + %t488 = load { ptr, i64, i64 }, ptr %t487 + %t489 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t488) + br label %logic.rend10071 +logic.rend10071: + br label %logic.end10070 +logic.end10070: + %t490 = phi i1 [ false, %logic.from10068 ], [ %t489, %logic.rend10071 ] + br i1 %t490, label %then10072, label %endif10074 +then10072: + %t491 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 1 + %t492 = load { ptr, i64, i64 }, ptr %t491 + %t493 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 7 + %t494 = load { ptr, i64, i64 }, ptr %t493 + %t495 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t492, i64 3, { ptr, i64, i64 } %t494, { ptr, i64, i64 } { ptr @.str.6718, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t495) + br label %endif10074 +endif10074: + br label %each.step10062 +each.step10062: + %t496 = load i64, ptr %a467 + %t497 = add i64 %t496, 1 + store i64 %t497, ptr %a467 + br label %each.cond10060 +each.end10063: + %t498 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a499 + br label %each.cond10075 +each.cond10075: + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t498, i32 0, i32 1 + %t501 = load i64, ptr %t500 + %t502 = load i64, ptr %a499 + %t503 = icmp slt i64 %t502, %t501 + br i1 %t503, label %each.body10076, label %each.end10078 +each.body10076: + %t504 = load ptr, ptr %t498 + %t505 = getelementptr inbounds %S.lsp.StructRec, ptr %t504, i64 %t502 + %t506 = load %S.lsp.StructRec, ptr %t505 + store %S.lsp.StructRec %t506, ptr %a507 + %t508 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 0 + %t509 = load { ptr, i64, i64 }, ptr %t508 + store { ptr, i64, i64 } %t509, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.6719, i64 0, i64 0 }, ptr %a511 + %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) + %t513 = icmp ne i32 %t512, 0 + br label %logic.from10079 +logic.from10079: + br i1 %t513, label %logic.rhs10080, label %logic.end10081 +logic.rhs10080: + %t514 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t515 = load { ptr, i64, i64 }, ptr %t514 + %t516 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t515) + br label %logic.rend10082 +logic.rend10082: + br label %logic.end10081 +logic.end10081: + %t517 = phi i1 [ false, %logic.from10079 ], [ %t516, %logic.rend10082 ] + br i1 %t517, label %then10083, label %endif10085 +then10083: + %t518 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t519 = load { ptr, i64, i64 }, ptr %t518 + %t520 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t521 = load { ptr, i64, i64 }, ptr %t520 + store { ptr, i64, i64 } { ptr @.str.6720, i64 7, i64 0 }, ptr %a523 + store { ptr, i64, i64 } %t521, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + %t525 = load { ptr, i64, i64 }, ptr %a522 + %t526 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t519, i64 22, { ptr, i64, i64 } %t525, { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t526) + br label %endif10085 +endif10085: + br label %each.step10077 +each.step10077: + %t527 = load i64, ptr %a499 + %t528 = add i64 %t527, 1 + store i64 %t528, ptr %a499 + br label %each.cond10075 +each.end10078: + %t529 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a530 + br label %each.cond10086 +each.cond10086: + %t531 = getelementptr inbounds { ptr, i64, i64 }, ptr %t529, i32 0, i32 1 + %t532 = load i64, ptr %t531 + %t533 = load i64, ptr %a530 + %t534 = icmp slt i64 %t533, %t532 + br i1 %t534, label %each.body10087, label %each.end10089 +each.body10087: + %t535 = load ptr, ptr %t529 + %t536 = getelementptr inbounds %S.lsp.EnumRec, ptr %t535, i64 %t533 + %t537 = load %S.lsp.EnumRec, ptr %t536 + store %S.lsp.EnumRec %t537, ptr %a538 + %t539 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 0 + %t540 = load { ptr, i64, i64 }, ptr %t539 + store { ptr, i64, i64 } %t540, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.6722, i64 0, i64 0 }, ptr %a542 + %t543 = call i32 @finch_str_eq(ptr %a541, ptr %a542) + %t544 = icmp ne i32 %t543, 0 + br label %logic.from10090 +logic.from10090: + br i1 %t544, label %logic.rhs10091, label %logic.end10092 +logic.rhs10091: + %t545 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t546 = load { ptr, i64, i64 }, ptr %t545 + %t547 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t546) + br label %logic.rend10093 +logic.rend10093: + br label %logic.end10092 +logic.end10092: + %t548 = phi i1 [ false, %logic.from10090 ], [ %t547, %logic.rend10093 ] + br i1 %t548, label %then10094, label %endif10096 +then10094: + %t549 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t550 = load { ptr, i64, i64 }, ptr %t549 + %t551 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t552 = load { ptr, i64, i64 }, ptr %t551 + store { ptr, i64, i64 } { ptr @.str.6723, i64 5, i64 0 }, ptr %a554 + store { ptr, i64, i64 } %t552, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + %t556 = load { ptr, i64, i64 }, ptr %a553 + %t557 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t550, i64 13, { ptr, i64, i64 } %t556, { ptr, i64, i64 } { ptr @.str.6724, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t557) + br label %endif10096 +endif10096: + br label %each.step10088 +each.step10088: + %t558 = load i64, ptr %a530 + %t559 = add i64 %t558, 1 + store i64 %t559, ptr %a530 + br label %each.cond10086 +each.end10089: + %t560 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + store i64 0, ptr %a561 + br label %each.cond10097 +each.cond10097: + %t562 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + %t563 = load i64, ptr %t562 + %t564 = load i64, ptr %a561 + %t565 = icmp slt i64 %t564, %t563 + br i1 %t565, label %each.body10098, label %each.end10100 +each.body10098: + %t566 = load ptr, ptr %t560 + %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i64 %t564 + %t568 = load { ptr, i64, i64 }, ptr %t567 + store { ptr, i64, i64 } %t568, ptr %a569 + %t570 = load { ptr, i64, i64 }, ptr %a569 + %t571 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t570) + br i1 %t571, label %then10101, label %endif10103 +then10101: + %t572 = load { ptr, i64, i64 }, ptr %a569 + %t573 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t572, i64 9, { ptr, i64, i64 } { ptr @.str.6725, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6726, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t573) + br label %endif10103 +endif10103: + br label %each.step10099 +each.step10099: + %t574 = load i64, ptr %a561 + %t575 = add i64 %t574, 1 + store i64 %t575, ptr %a561 + br label %each.cond10097 +each.end10100: + %t576 = call { ptr, i64, i64 } @finch.docs.builtins() + store { ptr, i64, i64 } %t576, ptr %a577 + store i64 0, ptr %a578 + br label %each.cond10104 +each.cond10104: + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a577, i32 0, i32 1 + %t580 = load i64, ptr %t579 + %t581 = load i64, ptr %a578 + %t582 = icmp slt i64 %t581, %t580 + br i1 %t582, label %each.body10105, label %each.end10107 +each.body10105: + %t583 = load ptr, ptr %a577 + %t584 = getelementptr inbounds %S.docs.Doc, ptr %t583, i64 %t581 + %t585 = load %S.docs.Doc, ptr %t584 + store %S.docs.Doc %t585, ptr %a586 + %t587 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 0 + %t588 = load { ptr, i64, i64 }, ptr %t587 + %t589 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t588) + br i1 %t589, label %then10108, label %endif10110 +then10108: + %t590 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 0 + %t591 = load { ptr, i64, i64 }, ptr %t590 + %t592 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %t592 + %t594 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 2 + %t595 = load { ptr, i64, i64 }, ptr %t594 + %t596 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t591, i64 3, { ptr, i64, i64 } %t593, { ptr, i64, i64 } %t595) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t596) + br label %endif10110 +endif10110: + br label %each.step10106 +each.step10106: + %t597 = load i64, ptr %a578 + %t598 = add i64 %t597, 1 + store i64 %t598, ptr %a578 + br label %each.cond10104 +each.end10107: + %t599 = call { ptr, i64, i64 } @finch.docs.keywords() + store { ptr, i64, i64 } %t599, ptr %a600 + store i64 0, ptr %a601 + br label %each.cond10111 +each.cond10111: + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %a600, i32 0, i32 1 + %t603 = load i64, ptr %t602 + %t604 = load i64, ptr %a601 + %t605 = icmp slt i64 %t604, %t603 + br i1 %t605, label %each.body10112, label %each.end10114 +each.body10112: + %t606 = load ptr, ptr %a600 + %t607 = getelementptr inbounds { ptr, i64, i64 }, ptr %t606, i64 %t604 + %t608 = load { ptr, i64, i64 }, ptr %t607 + store { ptr, i64, i64 } %t608, ptr %a609 + %t610 = load { ptr, i64, i64 }, ptr %a609 + %t611 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t610) + br i1 %t611, label %then10115, label %endif10117 +then10115: + %t612 = load { ptr, i64, i64 }, ptr %a609 + %t613 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t612, i64 14, { ptr, i64, i64 } { ptr @.str.6727, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6728, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t613) + br label %endif10117 +endif10117: + br label %each.step10113 +each.step10113: + %t614 = load i64, ptr %a601 + %t615 = add i64 %t614, 1 + store i64 %t615, ptr %a601 + br label %each.cond10111 +each.end10114: + %t616 = call { ptr, i64, i64 } @finch.docs.typeNames() + store { ptr, i64, i64 } %t616, ptr %a617 + store i64 0, ptr %a618 + br label %each.cond10118 +each.cond10118: + %t619 = getelementptr inbounds { ptr, i64, i64 }, ptr %a617, i32 0, i32 1 + %t620 = load i64, ptr %t619 + %t621 = load i64, ptr %a618 + %t622 = icmp slt i64 %t621, %t620 + br i1 %t622, label %each.body10119, label %each.end10121 +each.body10119: + %t623 = load ptr, ptr %a617 + %t624 = getelementptr inbounds { ptr, i64, i64 }, ptr %t623, i64 %t621 + %t625 = load { ptr, i64, i64 }, ptr %t624 + store { ptr, i64, i64 } %t625, ptr %a626 + %t627 = load { ptr, i64, i64 }, ptr %a626 + %t628 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t627) + br i1 %t628, label %then10122, label %endif10124 +then10122: + %t629 = load { ptr, i64, i64 }, ptr %a626 + %t630 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t629, i64 25, { ptr, i64, i64 } { ptr @.str.6729, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6730, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t630) + br label %endif10124 +endif10124: + br label %each.step10120 +each.step10120: + %t631 = load i64, ptr %a618 + %t632 = add i64 %t631, 1 + store i64 %t632, ptr %a618 + br label %each.cond10118 +each.end10121: + %t633 = load %S.json.Json, ptr %a7 + %t634 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t633) + ret %S.json.Json %t634 +} + +define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.lsp.Names, ptr %self, i32 0, i32 0 + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i32 0, i32 1 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a5 + %t6 = load i64, ptr %t3 + %t7 = load ptr, ptr %t2 + store i64 0, ptr %a8 + br label %find.cond10125 +find.cond10125: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t6 + br i1 %t10, label %find.body10126, label %find.end10129 +find.body10126: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 %t9 + %t12 = load { ptr, i64, i64 }, ptr %t11 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } %t4, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp ne i32 %t15, 0 + br i1 %t16, label %find.hit10127, label %find.next10128 +find.hit10127: + store i64 %t9, ptr %a5 + br label %find.end10129 +find.next10128: + %t17 = add i64 %t9, 1 + store i64 %t17, ptr %a8 + br label %find.cond10125 +find.end10129: + %t18 = load i64, ptr %a5 + %t19 = icmp sge i64 %t18, 0 + br i1 %t19, label %then10130, label %endif10132 +then10130: + ret i1 false +endif10132: + %t20 = getelementptr inbounds %S.lsp.Names, ptr %self, i32 0, i32 0 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_copy(ptr %a24, ptr %a23) + %t25 = load { ptr, i64, i64 }, ptr %a24 + %t26 = load i64, ptr %t21 + %t27 = add i64 %t26, 1 + call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t28 = load ptr, ptr %t20 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 + store { ptr, i64, i64 } %t25, ptr %t29 + store i64 %t27, ptr %t21 + ret i1 true +} + +define internal %S.json.Json @finch.lsp.completionList(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a7 = alloca %S.json.Json, align 16 + %a8 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.new_bool(i1 false) + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6731, i64 12, i64 0 }, %S.json.Json %t4) + %t5 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6732, i64 5, i64 0 }, %S.json.Json %t5) + %t6 = load %S.json.Json, ptr %a3 + store %S.json.Json %t6, ptr %a7 + call void @finch.copy.S_json_Json(ptr %a8, ptr %a7) + %t9 = load %S.json.Json, ptr %a8 + ret %S.json.Json %t9 +} + +define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca i64, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca i64, align 16 + %a26 = alloca i64, align 16 + %a27 = alloca i64, align 16 + %a31 = alloca i64, align 16 + %a41 = alloca i8, align 16 + %a74 = alloca i64, align 16 + %a76 = alloca i64, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca i64, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca i64, align 16 + %a183 = alloca %S.lsp.FnRec, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.json.Json, align 16 + %a205 = alloca %S.json.Json, align 16 + %a207 = alloca i64, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca %S.json.Json, align 16 + %a228 = alloca %S.json.Json, align 16 + %a231 = alloca %S.json.Json, align 16 + %a242 = alloca %S.docs.Doc, align 16 + %a248 = alloca %S.json.Json, align 16 + %a256 = alloca %S.json.Json, align 16 + %a259 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a4 + %t8 = call { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %t6, i64 %t7) + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load i64, ptr %a5 + %t11 = sub i64 %t10, 1 + store i64 %t11, ptr %a12 + %t13 = load i64, ptr %a12 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = icmp sgt i64 %t13, %t15 + br i1 %t16, label %then10133, label %endif10135 +then10133: + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t18 = load i64, ptr %t17 + store i64 %t18, ptr %a12 + br label %endif10135 +endif10135: + %t19 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = load i64, ptr %a12 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 0, i64 %t22, ptr @.str.6733, i64 671) + %t23 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t23, ptr %a24 + store i64 0, ptr %a25 + store i64 0, ptr %a26 + store i64 -1, ptr %a27 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a24, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = sub i64 %t29, 1 + store i64 %t30, ptr %a31 + br label %while.cond10136 +while.cond10136: + %t32 = load i64, ptr %a31 + %t33 = icmp sge i64 %t32, 0 + br i1 %t33, label %while.body10137, label %while.end10138 +while.body10137: + %t34 = load i64, ptr %a31 + %t35 = load { ptr, i64, i64 }, ptr %a24 + %t36 = extractvalue { ptr, i64, i64 } %t35, 1 + %t37 = icmp uge i64 %t34, %t36 + br i1 %t37, label %range10139, label %inrange10140 +range10139: + call void @finch_panic_index(ptr @.str.6734, i64 678, i64 %t34, i64 %t36) + unreachable +inrange10140: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds i8, ptr %t38, i64 %t34 + %t40 = load i8, ptr %t39 + store i8 %t40, ptr %a41 + %t42 = load i8, ptr %a41 + %t43 = icmp eq i8 %t42, 41 + br label %logic.from10141 +logic.from10141: + br i1 %t43, label %logic.end10143, label %logic.rhs10142 +logic.rhs10142: + %t44 = load i8, ptr %a41 + %t45 = icmp eq i8 %t44, 93 + br label %logic.rend10144 +logic.rend10144: + br label %logic.end10143 +logic.end10143: + %t46 = phi i1 [ true, %logic.from10141 ], [ %t45, %logic.rend10144 ] + br i1 %t46, label %then10145, label %else10146 +then10145: + %t47 = load i64, ptr %a25 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a25 + br label %endif10147 +else10146: + %t49 = load i8, ptr %a41 + %t50 = icmp eq i8 %t49, 40 + br label %logic.from10148 +logic.from10148: + br i1 %t50, label %logic.end10150, label %logic.rhs10149 +logic.rhs10149: + %t51 = load i8, ptr %a41 + %t52 = icmp eq i8 %t51, 91 + br label %logic.rend10151 +logic.rend10151: + br label %logic.end10150 +logic.end10150: + %t53 = phi i1 [ true, %logic.from10148 ], [ %t52, %logic.rend10151 ] + br i1 %t53, label %then10152, label %else10153 +then10152: + %t54 = load i64, ptr %a25 + %t55 = icmp eq i64 %t54, 0 + br i1 %t55, label %then10155, label %else10156 +then10155: + %t56 = load i8, ptr %a41 + %t57 = icmp eq i8 %t56, 40 + br i1 %t57, label %then10158, label %endif10160 +then10158: + %t58 = load i64, ptr %a31 + store i64 %t58, ptr %a27 + br label %while.end10138 +endif10160: + br label %endif10157 +else10156: + %t59 = load i64, ptr %a25 + %t60 = sub i64 %t59, 1 + store i64 %t60, ptr %a25 + br label %endif10157 +endif10157: + br label %endif10154 +else10153: + %t61 = load i8, ptr %a41 + %t62 = icmp eq i8 %t61, 44 + br label %logic.from10161 +logic.from10161: + br i1 %t62, label %logic.rhs10162, label %logic.end10163 +logic.rhs10162: + %t63 = load i64, ptr %a25 + %t64 = icmp eq i64 %t63, 0 + br label %logic.rend10164 +logic.rend10164: + br label %logic.end10163 +logic.end10163: + %t65 = phi i1 [ false, %logic.from10161 ], [ %t64, %logic.rend10164 ] + br i1 %t65, label %then10165, label %endif10167 +then10165: + %t66 = load i64, ptr %a26 + %t67 = add i64 %t66, 1 + store i64 %t67, ptr %a26 + br label %endif10167 +endif10167: + br label %endif10154 +endif10154: + br label %endif10147 +endif10147: + %t68 = load i64, ptr %a31 + %t69 = sub i64 %t68, 1 + store i64 %t69, ptr %a31 + br label %while.cond10136 +while.end10138: + %t70 = load i64, ptr %a27 + %t71 = icmp slt i64 %t70, 0 + br i1 %t71, label %then10168, label %endif10170 +then10168: + %t72 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t72 +endif10170: + %t73 = load i64, ptr %a27 + store i64 %t73, ptr %a74 + %t75 = load i64, ptr %a74 + store i64 %t75, ptr %a76 + br label %while.cond10171 +while.cond10171: + %t77 = load i64, ptr %a76 + %t78 = icmp sgt i64 %t77, 0 + br label %logic.from10174 +logic.from10174: + br i1 %t78, label %logic.rhs10175, label %logic.end10176 +logic.rhs10175: + %t79 = load i64, ptr %a76 + %t80 = sub i64 %t79, 1 + %t81 = load { ptr, i64, i64 }, ptr %a24 + %t82 = extractvalue { ptr, i64, i64 } %t81, 1 + %t83 = icmp uge i64 %t80, %t82 + br i1 %t83, label %range10177, label %inrange10178 +range10177: + call void @finch_panic_index(ptr @.str.6735, i64 700, i64 %t80, i64 %t82) + unreachable +inrange10178: + %t84 = extractvalue { ptr, i64, i64 } %t81, 0 + %t85 = getelementptr inbounds i8, ptr %t84, i64 %t80 + %t86 = load i8, ptr %t85 + %t87 = call i1 @finch.lsp.isWordChar(i8 %t86) + br label %logic.rend10179 +logic.rend10179: + br label %logic.end10176 +logic.end10176: + %t88 = phi i1 [ false, %logic.from10174 ], [ %t87, %logic.rend10179 ] + br i1 %t88, label %while.body10172, label %while.end10173 +while.body10172: + %t89 = load i64, ptr %a76 + %t90 = sub i64 %t89, 1 + store i64 %t90, ptr %a76 + br label %while.cond10171 +while.end10173: + %t91 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t91, ptr %a92 + %t94 = load i64, ptr %a76 + %t95 = load i64, ptr %a74 + call void @finch_str_sub(ptr %a93, ptr %a92, i64 %t94, i64 %t95, ptr @.str.6736, i64 703) + %t96 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t96, ptr %a97 + %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1 + %t99 = load i64, ptr %t98 + %t100 = icmp eq i64 %t99, 0 + br i1 %t100, label %then10180, label %endif10182 +then10180: + %t101 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t101 +endif10182: + store { ptr, i64, i64 } { ptr @.str.6737, i64 0, i64 0 }, ptr %a102 + %t103 = load i64, ptr %a76 + %t104 = icmp sgt i64 %t103, 0 + br label %logic.from10183 +logic.from10183: + br i1 %t104, label %logic.rhs10184, label %logic.end10185 +logic.rhs10184: + %t105 = load i64, ptr %a76 + %t106 = sub i64 %t105, 1 + %t107 = load { ptr, i64, i64 }, ptr %a24 + %t108 = extractvalue { ptr, i64, i64 } %t107, 1 + %t109 = icmp uge i64 %t106, %t108 + br i1 %t109, label %range10186, label %inrange10187 +range10186: + call void @finch_panic_index(ptr @.str.6738, i64 708, i64 %t106, i64 %t108) + unreachable +inrange10187: + %t110 = extractvalue { ptr, i64, i64 } %t107, 0 + %t111 = getelementptr inbounds i8, ptr %t110, i64 %t106 + %t112 = load i8, ptr %t111 + %t113 = icmp eq i8 %t112, 46 + br label %logic.rend10188 +logic.rend10188: + br label %logic.end10185 +logic.end10185: + %t114 = phi i1 [ false, %logic.from10183 ], [ %t113, %logic.rend10188 ] + br i1 %t114, label %then10189, label %endif10191 +then10189: + %t115 = load i64, ptr %a76 + %t116 = sub i64 %t115, 1 + store i64 %t116, ptr %a117 + br label %while.cond10192 +while.cond10192: + %t118 = load i64, ptr %a117 + %t119 = icmp sgt i64 %t118, 0 + br label %logic.from10195 +logic.from10195: + br i1 %t119, label %logic.rhs10196, label %logic.end10197 +logic.rhs10196: + %t120 = load i64, ptr %a117 + %t121 = sub i64 %t120, 1 + %t122 = load { ptr, i64, i64 }, ptr %a24 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range10198, label %inrange10199 +range10198: + call void @finch_panic_index(ptr @.str.6739, i64 711, i64 %t121, i64 %t123) + unreachable +inrange10199: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds i8, ptr %t125, i64 %t121 + %t127 = load i8, ptr %t126 + %t128 = call i1 @finch.lsp.isWordChar(i8 %t127) + br label %logic.rend10200 +logic.rend10200: + br label %logic.end10197 +logic.end10197: + %t129 = phi i1 [ false, %logic.from10195 ], [ %t128, %logic.rend10200 ] + br i1 %t129, label %while.body10193, label %while.end10194 +while.body10193: + %t130 = load i64, ptr %a117 + %t131 = sub i64 %t130, 1 + store i64 %t131, ptr %a117 + br label %while.cond10192 +while.end10194: + %t132 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t132, ptr %a133 + %t135 = load i64, ptr %a117 + %t136 = load i64, ptr %a76 + %t137 = sub i64 %t136, 1 + call void @finch_str_sub(ptr %a134, ptr %a133, i64 %t135, i64 %t137, ptr @.str.6740, i64 714) + %t138 = load { ptr, i64, i64 }, ptr %a134 + store { ptr, i64, i64 } %t138, ptr %a139 + %t140 = load %S.lsp.Analysis, ptr %a1 + %t141 = load { ptr, i64, i64 }, ptr %a3 + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = load i64, ptr %a4 + %t144 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t140, { ptr, i64, i64 } %t141, { ptr, i64, i64 } %t142, i64 %t143) + %t145 = extractvalue %S.lsp.VarRec %t144, 1 + store { ptr, i64, i64 } %t145, ptr %a146 + call void @finch_str_copy(ptr %a147, ptr %a146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t148, ptr %a149 + %t150 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.6742, i64 4, i64 0 }, ptr %a153 + %t154 = call i32 @finch_str_starts(ptr %a151, ptr %a153) + %t155 = icmp ne i32 %t154, 0 + br label %logic.from10201 +logic.from10201: + br i1 %t155, label %logic.rhs10202, label %logic.end10203 +logic.rhs10202: + %t156 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t156, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.6744, i64 1, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_ends(ptr %a157, ptr %a159) + %t161 = icmp ne i32 %t160, 0 + br label %logic.rend10204 +logic.rend10204: + br label %logic.end10203 +logic.end10203: + %t162 = phi i1 [ false, %logic.from10201 ], [ %t161, %logic.rend10204 ] + br i1 %t162, label %then10205, label %endif10207 +then10205: + %t163 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t163, ptr %a164 + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %a149, i32 0, i32 1 + %t167 = load i64, ptr %t166 + %t168 = sub i64 %t167, 1 + call void @finch_str_sub(ptr %a165, ptr %a164, i64 4, i64 %t168, ptr @.str.6745, i64 717) + %t169 = load { ptr, i64, i64 }, ptr %a165 + store { ptr, i64, i64 } %t169, ptr %a149 + br label %endif10207 +endif10207: + %t170 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t173, ptr %a102 + br label %endif10191 +endif10191: + %t174 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a175 + br label %each.cond10208 +each.cond10208: + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 + %t177 = load i64, ptr %t176 + %t178 = load i64, ptr %a175 + %t179 = icmp slt i64 %t178, %t177 + br i1 %t179, label %each.body10209, label %each.end10211 +each.body10209: + %t180 = load ptr, ptr %t174 + %t181 = getelementptr inbounds %S.lsp.FnRec, ptr %t180, i64 %t178 + %t182 = load %S.lsp.FnRec, ptr %t181 + store %S.lsp.FnRec %t182, ptr %a183 + %t184 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + %t186 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t185, ptr %a187 + store { ptr, i64, i64 } %t186, ptr %a188 + %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) + %t190 = icmp ne i32 %t189, 0 + br label %logic.from10212 +logic.from10212: + br i1 %t190, label %logic.rhs10213, label %logic.end10214 +logic.rhs10213: + %t191 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 2 + %t192 = load { ptr, i64, i64 }, ptr %t191 + %t193 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } %t193, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br label %logic.rend10215 +logic.rend10215: + br label %logic.end10214 +logic.end10214: + %t198 = phi i1 [ false, %logic.from10212 ], [ %t197, %logic.rend10215 ] + br i1 %t198, label %then10216, label %endif10218 +then10216: + %t199 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t199, ptr %a200 + %t201 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 7 + %t202 = load { ptr, i64, i64 }, ptr %t201 + %t203 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t202) + call void @finch.json.Json.set(ptr %a200, { ptr, i64, i64 } { ptr @.str.6746, i64 5, i64 0 }, %S.json.Json %t203) + %t204 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t204, ptr %a205 + %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 8 + store i64 0, ptr %a207 + br label %each.cond10219 +each.cond10219: + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t209 = load i64, ptr %t208 + %t210 = load i64, ptr %a207 + %t211 = icmp slt i64 %t210, %t209 + br i1 %t211, label %each.body10220, label %each.end10222 +each.body10220: + %t212 = load ptr, ptr %t206 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t210 + %t214 = load { ptr, i64, i64 }, ptr %t213 + store { ptr, i64, i64 } %t214, ptr %a215 + %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %a215, i32 0, i32 1 + %t217 = load i64, ptr %t216 + %t218 = icmp sgt i64 %t217, 0 + br i1 %t218, label %then10223, label %endif10225 +then10223: + %t219 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t219, ptr %a220 + %t221 = load { ptr, i64, i64 }, ptr %a215 + %t222 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t221) + call void @finch.json.Json.set(ptr %a220, { ptr, i64, i64 } { ptr @.str.6747, i64 5, i64 0 }, %S.json.Json %t222) + %t223 = load %S.json.Json, ptr %a220 + call void @finch.json.Json.push(ptr %a205, %S.json.Json %t223) + br label %endif10225 +endif10225: + br label %each.step10221 +each.step10221: + %t224 = load i64, ptr %a207 + %t225 = add i64 %t224, 1 + store i64 %t225, ptr %a207 + br label %each.cond10219 +each.end10222: + %t226 = load %S.json.Json, ptr %a205 + call void @finch.json.Json.set(ptr %a200, { ptr, i64, i64 } { ptr @.str.6748, i64 10, i64 0 }, %S.json.Json %t226) + %t227 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t227, ptr %a228 + %t229 = load %S.json.Json, ptr %a200 + call void @finch.json.Json.push(ptr %a228, %S.json.Json %t229) + %t230 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t230, ptr %a231 + %t232 = load %S.json.Json, ptr %a228 + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6749, i64 10, i64 0 }, %S.json.Json %t232) + %t233 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6750, i64 15, i64 0 }, %S.json.Json %t233) + %t234 = load i64, ptr %a26 + %t235 = call %S.json.Json @finch.lsp.num(i64 %t234) + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6751, i64 15, i64 0 }, %S.json.Json %t235) + %t236 = load %S.json.Json, ptr %a231 + ret %S.json.Json %t236 +endif10218: + br label %each.step10210 +each.step10210: + %t237 = load i64, ptr %a175 + %t238 = add i64 %t237, 1 + store i64 %t238, ptr %a175 + br label %each.cond10208 +each.end10211: + %t239 = call { ptr, i64, i64 } @finch.docs.builtins() + %t240 = load { ptr, i64, i64 }, ptr %a97 + %t241 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t239, { ptr, i64, i64 } %t240) + store %S.docs.Doc %t241, ptr %a242 + %t243 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 0 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = load i64, ptr %t244 + %t246 = icmp sgt i64 %t245, 0 + br i1 %t246, label %then10226, label %endif10228 +then10226: + %t247 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t247, ptr %a248 + %t249 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t250) + call void @finch.json.Json.set(ptr %a248, { ptr, i64, i64 } { ptr @.str.6752, i64 5, i64 0 }, %S.json.Json %t251) + %t252 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 2 + %t253 = load { ptr, i64, i64 }, ptr %t252 + %t254 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t253) + call void @finch.json.Json.set(ptr %a248, { ptr, i64, i64 } { ptr @.str.6753, i64 13, i64 0 }, %S.json.Json %t254) + %t255 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t255, ptr %a256 + %t257 = load %S.json.Json, ptr %a248 + call void @finch.json.Json.push(ptr %a256, %S.json.Json %t257) + %t258 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t258, ptr %a259 + %t260 = load %S.json.Json, ptr %a256 + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6754, i64 10, i64 0 }, %S.json.Json %t260) + %t261 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6755, i64 15, i64 0 }, %S.json.Json %t261) + %t262 = load i64, ptr %a26 + %t263 = call %S.json.Json @finch.lsp.num(i64 %t262) + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6756, i64 15, i64 0 }, %S.json.Json %t263) + %t264 = load %S.json.Json, ptr %a259 + ret %S.json.Json %t264 +endif10228: + %t265 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t265 +} + +define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6757, i64 12, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6758, i64 4, i64 0 }) + store %S.json.Json %t4, ptr %a5 + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6759, i64 0, i64 0 }) + ret { ptr, i64, i64 } %t6 +} + +define internal { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6760, i64 12, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6761, i64 3, i64 0 }) + store %S.json.Json %t4, ptr %a5 + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6762, i64 0, i64 0 }) + %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) + ret { ptr, i64, i64 } %t7 +} + +define internal void @finch.lsp.Server.answer(ptr %self, %S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.json.Json, align 16 + %a9 = alloca %S.json.Json, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.json.Json, align 16 + %a22 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + %a29 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 + %a37 = alloca %S.json.Json, align 16 + %a40 = alloca %S.json.Json, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca i32, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca %S.json.Json, align 16 + %a95 = alloca %S.json.Json, align 16 + %a97 = alloca %S.json.Json, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca i32, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca %S.json.Json, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca %S.json.Json, align 16 + %a181 = alloca %S.json.Json, align 16 + %a184 = alloca i64, align 16 + %a186 = alloca %S.json.Json, align 16 + %a188 = alloca %S.json.Json, align 16 + %a191 = alloca i64, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca %S.lsp.Analysis, align 16 + %a213 = alloca %S.lsp.Analysis, align 16 + %a215 = alloca %S.lsp.Analysis, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6763, i64 6, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a3, { ptr, i64, i64 } { ptr @.str.6764, i64 0, i64 0 }) + store { ptr, i64, i64 } %t4, ptr %a5 + %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6765, i64 6, i64 0 }) + store %S.json.Json %t6, ptr %a7 + %t8 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6766, i64 2, i64 0 }) + store %S.json.Json %t8, ptr %a9 + %t10 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t10, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6767, i64 10, i64 0 }, ptr %a12 + %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) + %t14 = icmp ne i32 %t13, 0 + br i1 %t14, label %match.arm10230, label %match.next10231 +match.arm10230: + %t15 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t15, ptr %a16 + %t17 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6768, i64 16, i64 0 }, %S.json.Json %t17) + %t18 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6769, i64 13, i64 0 }, %S.json.Json %t18) + %t19 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6770, i64 18, i64 0 }, %S.json.Json %t19) + %t20 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6771, i64 22, i64 0 }, %S.json.Json %t20) + %t21 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t21, ptr %a22 + %t23 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t23, ptr %a24 + %t25 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6772, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a24, %S.json.Json %t25) + %t26 = load %S.json.Json, ptr %a24 + call void @finch.json.Json.set(ptr %a22, { ptr, i64, i64 } { ptr @.str.6773, i64 17, i64 0 }, %S.json.Json %t26) + %t27 = load %S.json.Json, ptr %a22 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, %S.json.Json %t27) + %t28 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t28, ptr %a29 + %t30 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t30, ptr %a31 + %t32 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6775, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a31, %S.json.Json %t32) + %t33 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6776, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a31, %S.json.Json %t33) + %t34 = load %S.json.Json, ptr %a31 + call void @finch.json.Json.set(ptr %a29, { ptr, i64, i64 } { ptr @.str.6777, i64 17, i64 0 }, %S.json.Json %t34) + %t35 = load %S.json.Json, ptr %a29 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6778, i64 21, i64 0 }, %S.json.Json %t35) + %t36 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t36, ptr %a37 + %t38 = load %S.json.Json, ptr %a16 + call void @finch.json.Json.set(ptr %a37, { ptr, i64, i64 } { ptr @.str.6779, i64 12, i64 0 }, %S.json.Json %t38) + %t39 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t39, ptr %a40 + %t41 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6781, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a40, { ptr, i64, i64 } { ptr @.str.6780, i64 4, i64 0 }, %S.json.Json %t41) + %t42 = load %S.json.Json, ptr %a40 + call void @finch.json.Json.set(ptr %a37, { ptr, i64, i64 } { ptr @.str.6782, i64 10, i64 0 }, %S.json.Json %t42) + %t43 = load %S.json.Json, ptr %a9 + %t44 = load %S.json.Json, ptr %a37 + call void @finch.lsp.reply(%S.json.Json %t43, %S.json.Json %t44) + br label %match.end10229 +match.next10231: + store { ptr, i64, i64 } %t10, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6783, i64 8, i64 0 }, ptr %a46 + %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) + %t48 = icmp ne i32 %t47, 0 + br i1 %t48, label %match.arm10232, label %match.next10233 +match.arm10232: + %t49 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 + store i1 true, ptr %t49 + %t50 = load %S.json.Json, ptr %a9 + %t51 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t50, %S.json.Json %t51) + br label %match.end10229 +match.next10233: + store { ptr, i64, i64 } %t10, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6784, i64 4, i64 0 }, ptr %a53 + %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) + %t55 = icmp ne i32 %t54, 0 + br i1 %t55, label %match.arm10234, label %match.next10235 +match.arm10234: + %t56 = trunc i64 0 to i32 + %t57 = call i32 @fflush(ptr null) + call void @exit(i32 %t56) + br label %match.end10229 +match.next10235: + store { ptr, i64, i64 } %t10, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.6785, i64 20, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br i1 %t61, label %match.arm10236, label %match.next10237 +match.arm10236: + %t62 = load %S.json.Json, ptr %a7 + %t63 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t62) + store { ptr, i64, i64 } %t63, ptr %a64 + %t65 = load %S.json.Json, ptr %a7 + %t66 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t65) + %t67 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t68 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t68, ptr %a69 + store i32 0, ptr %a70 + %t71 = call i64 @finch_map_slot(ptr %t67, ptr %a69, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a70) + %t72 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t67, i32 0, i32 0 + %t73 = load ptr, ptr %t72 + %t74 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t73, i64 %t71 + %t75 = load i32, ptr %a70 + %t76 = icmp ne i32 %t75, 0 + br i1 %t76, label %map.new10238, label %map.have10239 +map.new10238: + %t77 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 1 + call void @finch_str_copy(ptr %t77, ptr %a69) + %t78 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t78 + br label %map.have10239 +map.have10239: + %t79 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 2 + store { ptr, i64, i64 } %t66, ptr %t79 + %t80 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t80) + br label %match.end10229 +match.next10237: + store { ptr, i64, i64 } %t10, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.6786, i64 22, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp ne i32 %t83, 0 + br i1 %t84, label %match.arm10240, label %match.next10241 +match.arm10240: + %t85 = load %S.json.Json, ptr %a7 + %t86 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t85) + store { ptr, i64, i64 } %t86, ptr %a87 + %t88 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6787, i64 14, i64 0 }) + store %S.json.Json %t88, ptr %a89 + %t90 = call i64 @finch.json.Json.len(ptr %a89) + %t91 = icmp sgt i64 %t90, 0 + br i1 %t91, label %then10242, label %endif10244 +then10242: + %t92 = call i64 @finch.json.Json.len(ptr %a89) + %t93 = sub i64 %t92, 1 + %t94 = call %S.json.Json @finch.json.Json.at(ptr %a89, i64 %t93) + store %S.json.Json %t94, ptr %a95 + %t96 = call %S.json.Json @finch.json.Json.get(ptr %a95, { ptr, i64, i64 } { ptr @.str.6788, i64 4, i64 0 }) + store %S.json.Json %t96, ptr %a97 + %t98 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a97, { ptr, i64, i64 } { ptr @.str.6789, i64 0, i64 0 }) + %t99 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t100 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t100, ptr %a101 + store i32 0, ptr %a102 + %t103 = call i64 @finch_map_slot(ptr %t99, ptr %a101, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a102) + %t104 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t99, i32 0, i32 0 + %t105 = load ptr, ptr %t104 + %t106 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t105, i64 %t103 + %t107 = load i32, ptr %a102 + %t108 = icmp ne i32 %t107, 0 + br i1 %t108, label %map.new10245, label %map.have10246 +map.new10245: + %t109 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 1 + call void @finch_str_copy(ptr %t109, ptr %a101) + %t110 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t110 + br label %map.have10246 +map.have10246: + %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 2 + store { ptr, i64, i64 } %t98, ptr %t111 + %t112 = load { ptr, i64, i64 }, ptr %a87 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t112) + br label %endif10244 +endif10244: + br label %match.end10229 +match.next10241: + store { ptr, i64, i64 } %t10, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.6790, i64 20, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %match.arm10247, label %match.next10248 +match.arm10247: + %t117 = load %S.json.Json, ptr %a7 + %t118 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t117) + store { ptr, i64, i64 } %t118, ptr %a119 + %t120 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t121 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t121, ptr %a122 + %t123 = call i64 @finch_map_find(ptr %t120, ptr %a122, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t124 = icmp sge i64 %t123, 0 + br i1 %t124, label %then10249, label %endif10251 +then10249: + %t125 = load { ptr, i64, i64 }, ptr %a119 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) + br label %endif10251 +endif10251: + br label %match.end10229 +match.next10248: + store { ptr, i64, i64 } %t10, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6791, i64 21, i64 0 }, ptr %a127 + %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) + %t129 = icmp ne i32 %t128, 0 + br i1 %t129, label %match.arm10252, label %match.next10253 +match.arm10252: + %t130 = load %S.json.Json, ptr %a7 + %t131 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t130) + store { ptr, i64, i64 } %t131, ptr %a132 + %t133 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t134 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t134, ptr %a135 + %t136 = call i64 @finch_map_find(ptr %t133, ptr %a135, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t137 = icmp sge i64 %t136, 0 + br i1 %t137, label %remove.hit10254, label %remove.end10255 +remove.hit10254: + call void @finch_map_remove_at(ptr %t133, i64 %t136, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) + br label %remove.end10255 +remove.end10255: + %t138 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t139 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t139, ptr %a140 + %t141 = call i64 @finch_map_find(ptr %t138, ptr %a140, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t142 = icmp sge i64 %t141, 0 + br i1 %t142, label %remove.hit10256, label %remove.end10257 +remove.hit10256: + call void @finch_map_remove_at(ptr %t138, i64 %t141, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10257 +remove.end10257: + %t143 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t144 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t144, ptr %a145 + %t146 = call i64 @finch_map_find(ptr %t143, ptr %a145, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t147 = icmp sge i64 %t146, 0 + br i1 %t147, label %remove.hit10258, label %remove.end10259 +remove.hit10258: + call void @finch_map_remove_at(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10259 +remove.end10259: + %t148 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t148, ptr %a149 + %t150 = load { ptr, i64, i64 }, ptr %a132 + %t151 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t150) + %t152 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t151) + call void @finch.json.Json.set(ptr %a149, { ptr, i64, i64 } { ptr @.str.6792, i64 3, i64 0 }, %S.json.Json %t152) + %t153 = call %S.json.Json @finch.json.new_list() + call void @finch.json.Json.set(ptr %a149, { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, %S.json.Json %t153) + %t154 = load %S.json.Json, ptr %a149 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6794, i64 31, i64 0 }, %S.json.Json %t154) + br label %match.end10229 +match.next10253: + store { ptr, i64, i64 } %t10, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.6795, i64 18, i64 0 }, ptr %a156 + %t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156) + %t158 = icmp ne i32 %t157, 0 + br i1 %t158, label %match.arm10260, label %match.or10262 +match.or10262: + store { ptr, i64, i64 } %t10, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.6796, i64 23, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + br i1 %t162, label %match.arm10260, label %match.or10263 +match.or10263: + store { ptr, i64, i64 } %t10, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.6797, i64 23, i64 0 }, ptr %a164 + %t165 = call i32 @finch_str_eq(ptr %a163, ptr %a164) + %t166 = icmp ne i32 %t165, 0 + br i1 %t166, label %match.arm10260, label %match.or10264 +match.or10264: + store { ptr, i64, i64 } %t10, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.6798, i64 27, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br i1 %t170, label %match.arm10260, label %match.or10265 +match.or10265: + store { ptr, i64, i64 } %t10, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.6799, i64 26, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %match.arm10260, label %match.next10261 +match.arm10260: + %t175 = load %S.json.Json, ptr %a7 + %t176 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t175) + store { ptr, i64, i64 } %t176, ptr %a177 + %t178 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6800, i64 8, i64 0 }) + store %S.json.Json %t178, ptr %a179 + %t180 = call %S.json.Json @finch.json.Json.get(ptr %a179, { ptr, i64, i64 } { ptr @.str.6801, i64 4, i64 0 }) + store %S.json.Json %t180, ptr %a181 + %t182 = call i64 @finch.json.Json.int_or(ptr %a181, i64 0) + %t183 = add i64 %t182, 1 + store i64 %t183, ptr %a184 + %t185 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6802, i64 8, i64 0 }) + store %S.json.Json %t185, ptr %a186 + %t187 = call %S.json.Json @finch.json.Json.get(ptr %a186, { ptr, i64, i64 } { ptr @.str.6803, i64 9, i64 0 }) + store %S.json.Json %t187, ptr %a188 + %t189 = call i64 @finch.json.Json.int_or(ptr %a188, i64 0) + %t190 = add i64 %t189, 1 + store i64 %t190, ptr %a191 + %t192 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t193 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t193, ptr %a194 + %t195 = call i64 @finch_map_find(ptr %t192, ptr %a194, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t196 = icmp sge i64 %t195, 0 + %t197 = xor i1 %t196, true + br i1 %t197, label %then10266, label %endif10268 +then10266: + %t198 = load %S.json.Json, ptr %a9 + %t199 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t198, %S.json.Json %t199) + ret void +endif10268: + %t200 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t201 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t201, ptr %a202 + %t203 = call i64 @finch_map_find(ptr %t200, ptr %a202, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t204 = icmp slt i64 %t203, 0 + br i1 %t204, label %map.missing10269, label %map.found10270 +map.missing10269: + store { ptr, i64, i64 } zeroinitializer, ptr %a205 + store { ptr, i64, i64 } %t201, ptr %a206 + call void @finch_buf_str(ptr %a205, ptr %a206, i32 1) + call void @finch_map_missing(ptr @.str.6804, i64 842, ptr %a205) + unreachable +map.found10270: + %t207 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t200, i32 0, i32 0 + %t208 = load ptr, ptr %t207 + %t209 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t208, i64 %t203 + %t210 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t209, i32 0, i32 2 + %t211 = load %S.lsp.Analysis, ptr %t210 + store %S.lsp.Analysis %t211, ptr %a212 + call void @finch.copy.S_lsp_Analysis(ptr %a213, ptr %a212) + %t214 = load %S.lsp.Analysis, ptr %a213 + store %S.lsp.Analysis %t214, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.6805, i64 0, i64 0 }, ptr %a216 + %t217 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t218 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t218, ptr %a219 + %t220 = call i64 @finch_map_find(ptr %t217, ptr %a219, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t221 = icmp sge i64 %t220, 0 + br i1 %t221, label %then10271, label %endif10273 +then10271: + %t222 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t223 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t223, ptr %a224 + %t225 = call i64 @finch_map_find(ptr %t222, ptr %a224, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t226 = icmp slt i64 %t225, 0 + br i1 %t226, label %map.missing10274, label %map.found10275 +map.missing10274: + store { ptr, i64, i64 } zeroinitializer, ptr %a227 + store { ptr, i64, i64 } %t223, ptr %a228 + call void @finch_buf_str(ptr %a227, ptr %a228, i32 1) + call void @finch_map_missing(ptr @.str.6806, i64 845, ptr %a227) + unreachable +map.found10275: + %t229 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t222, i32 0, i32 0 + %t230 = load ptr, ptr %t229 + %t231 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t230, i64 %t225 + %t232 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t231, i32 0, i32 2 + %t233 = load { ptr, i64, i64 }, ptr %t232 + store { ptr, i64, i64 } %t233, ptr %a234 + call void @finch_str_copy(ptr %a235, ptr %a234) + %t236 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t236, ptr %a216 + br label %endif10273 +endif10273: + %t237 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t237, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.6807, i64 18, i64 0 }, ptr %a239 + %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) + %t241 = icmp ne i32 %t240, 0 + br i1 %t241, label %match.arm10277, label %match.next10278 +match.arm10277: + %t242 = load %S.json.Json, ptr %a9 + %t243 = load %S.lsp.Analysis, ptr %a215 + %t244 = load { ptr, i64, i64 }, ptr %a177 + %t245 = load i64, ptr %a184 + %t246 = load i64, ptr %a191 + %t247 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t243, { ptr, i64, i64 } %t244, i64 %t245, i64 %t246) + call void @finch.lsp.reply(%S.json.Json %t242, %S.json.Json %t247) + br label %match.end10276 +match.next10278: + store { ptr, i64, i64 } %t237, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.6808, i64 23, i64 0 }, ptr %a249 + %t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249) + %t251 = icmp ne i32 %t250, 0 + br i1 %t251, label %match.arm10279, label %match.next10280 +match.arm10279: + %t252 = load %S.json.Json, ptr %a9 + %t253 = load %S.lsp.Analysis, ptr %a215 + %t254 = load { ptr, i64, i64 }, ptr %a177 + %t255 = load i64, ptr %a184 + %t256 = load i64, ptr %a191 + %t257 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t253, { ptr, i64, i64 } %t254, i64 %t255, i64 %t256) + call void @finch.lsp.reply(%S.json.Json %t252, %S.json.Json %t257) + br label %match.end10276 +match.next10280: + store { ptr, i64, i64 } %t237, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6809, i64 23, i64 0 }, ptr %a259 + %t260 = call i32 @finch_str_eq(ptr %a258, ptr %a259) + %t261 = icmp ne i32 %t260, 0 + br i1 %t261, label %match.arm10281, label %match.next10282 +match.arm10281: + %t262 = load %S.json.Json, ptr %a9 + %t263 = load %S.lsp.Analysis, ptr %a215 + %t264 = load { ptr, i64, i64 }, ptr %a216 + %t265 = load { ptr, i64, i64 }, ptr %a177 + %t266 = load i64, ptr %a184 + %t267 = load i64, ptr %a191 + %t268 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t263, { ptr, i64, i64 } %t264, { ptr, i64, i64 } %t265, i64 %t266, i64 %t267) + call void @finch.lsp.reply(%S.json.Json %t262, %S.json.Json %t268) + br label %match.end10276 +match.next10282: + store { ptr, i64, i64 } %t237, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.6810, i64 27, i64 0 }, ptr %a270 + %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) + %t272 = icmp ne i32 %t271, 0 + br i1 %t272, label %match.arm10283, label %match.next10284 +match.arm10283: + %t273 = load %S.json.Json, ptr %a9 + %t274 = load %S.lsp.Analysis, ptr %a215 + %t275 = load { ptr, i64, i64 }, ptr %a177 + %t276 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t274, { ptr, i64, i64 } %t275) + call void @finch.lsp.reply(%S.json.Json %t273, %S.json.Json %t276) + br label %match.end10276 +match.next10284: + br label %match.arm10285 +match.arm10285: + %t277 = load %S.json.Json, ptr %a9 + %t278 = load %S.lsp.Analysis, ptr %a215 + %t279 = load { ptr, i64, i64 }, ptr %a216 + %t280 = load { ptr, i64, i64 }, ptr %a177 + %t281 = load i64, ptr %a184 + %t282 = load i64, ptr %a191 + %t283 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t278, { ptr, i64, i64 } %t279, { ptr, i64, i64 } %t280, i64 %t281, i64 %t282) + call void @finch.lsp.reply(%S.json.Json %t277, %S.json.Json %t283) + br label %match.end10276 +match.end10276: + br label %match.end10229 +match.next10261: + br label %match.arm10287 +match.arm10287: + %t284 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 + %t285 = load i32, ptr %t284 + %t286 = icmp ne i32 %t285, 0 + br i1 %t286, label %then10289, label %endif10291 +then10289: + %t287 = load %S.json.Json, ptr %a9 + %t288 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t288) + br label %endif10291 +endif10291: + br label %match.end10229 +match.end10229: + ret void +} + +define internal i64 @finch.lsp.run({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.lsp.Server, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.json.Json, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 + %t7 = call i32 @getpid() + %t8 = sext i32 %t7 to i64 + call void @finch_str_from_int(ptr %a9, i64 %t8) + %t10 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6811, i64 15, i64 0 }, ptr %a12 + store { ptr, i64, i64 } %t10, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a11 + %t15 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t14, 1 + store %S.lsp.Server %t15, ptr %a16 + br label %while.cond10292 +while.cond10292: + br label %while.body10293 +while.body10293: + %t17 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() + %t18 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 0 + %t19 = xor i1 %t18, true + %t20 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 2 + %t21 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 1 + br i1 %t19, label %or.failed10295, label %or.ok10296 +or.failed10295: + store { ptr, i64, i64 } %t20, ptr %a22 + br label %while.end10294 +or.ok10296: + store %S.json.Json %t21, ptr %a23 + %t24 = load %S.json.Json, ptr %a23 + call void @finch.lsp.Server.answer(ptr %a16, %S.json.Json %t24) + br label %while.cond10292 +while.end10294: + %t25 = getelementptr inbounds %S.lsp.Server, ptr %a16, i32 0, i32 1 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.6812, i64 8, i64 0 }, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6813, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t34, ptr %a36 + call void @finch_str_copy(ptr %a35, ptr %a36) + %t37 = call i64 @finch_shell(ptr %a35) + ret i64 0 +} + +define internal %S.json.Json @finch.json.new_null() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 0, 0 + ret %S.json.Json %t1 +} + +define internal %S.json.Json @finch.json.new_bool(i1 %p0) { +entry: + %a1 = alloca i1, align 16 + store i1 %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 1, 0 + %t3 = load i1, ptr %a1 + %t4 = insertvalue %S.json.Json %t2, i1 %t3, 1 + ret %S.json.Json %t4 +} + +define internal %S.json.Json @finch.json.new_number(double %p0) { +entry: + %a1 = alloca double, align 16 + store double %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 2, 0 + %t3 = load double, ptr %a1 + %t4 = insertvalue %S.json.Json %t2, double %t3, 2 + ret %S.json.Json %t4 +} + +define internal %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 3, 0 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + %t7 = insertvalue %S.json.Json %t2, { ptr, i64, i64 } %t6, 3 + ret %S.json.Json %t7 +} + +define internal %S.json.Json @finch.json.new_list() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 4, 0 + ret %S.json.Json %t1 +} + +define internal %S.json.Json @finch.json.new_object() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 5, 0 + ret %S.json.Json %t1 +} + +define internal i1 @finch.json.Json.is_null(ptr %self) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t2 = load i32, ptr %t1 + %t3 = icmp eq i32 %t2, 0 + ret i1 %t3 +} + +define internal i64 @finch.json.Json.len(ptr %self) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t2 = load i32, ptr %t1 + %t3 = icmp eq i32 %t2, 4 + br i1 %t3, label %match.arm10298, label %match.or10300 +match.or10300: + %t4 = icmp eq i32 %t2, 5 + br i1 %t4, label %match.arm10298, label %match.next10299 +match.arm10298: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + br label %match.from10301 +match.from10301: + br label %match.end10297 +match.next10299: + %t8 = icmp eq i32 %t2, 3 + br i1 %t8, label %match.arm10302, label %match.next10303 +match.arm10302: + %t9 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 3 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + br label %match.from10304 +match.from10304: + br label %match.end10297 +match.next10303: + br label %match.arm10305 +match.arm10305: + br label %match.from10307 +match.from10307: + br label %match.end10297 +match.end10297: + %t12 = phi i64 [ %t7, %match.from10301 ], [ %t11, %match.from10304 ], [ 0, %match.from10307 ] + ret i64 %t12 +} + +define internal i1 @finch.json.Json.has(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a11 = alloca i64, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 5 + br label %logic.from10308 +logic.from10308: + br i1 %t4, label %logic.rhs10309, label %logic.end10310 +logic.rhs10309: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a8 + %t9 = load i64, ptr %t6 + %t10 = load ptr, ptr %t5 + store i64 0, ptr %a11 + br label %find.cond10311 +find.cond10311: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t9 + br i1 %t13, label %find.body10312, label %find.end10315 +find.body10312: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } %t7, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %find.hit10313, label %find.next10314 +find.hit10313: + store i64 %t12, ptr %a8 + br label %find.end10315 +find.next10314: + %t20 = add i64 %t12, 1 + store i64 %t20, ptr %a11 + br label %find.cond10311 +find.end10315: + %t21 = load i64, ptr %a8 + %t22 = icmp sge i64 %t21, 0 + br label %logic.rend10316 +logic.rend10316: + br label %logic.end10310 +logic.end10310: + %t23 = phi i1 [ false, %logic.from10308 ], [ %t22, %logic.rend10316 ] + ret i1 %t23 +} + +define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a12 = alloca i64, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca i64, align 16 + %a35 = alloca %S.json.Json, align 16 + %a36 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp ne i32 %t3, 5 + br i1 %t4, label %then10317, label %endif10319 +then10317: + %t5 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t5 +endif10319: + %t6 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a9 + %t10 = load i64, ptr %t7 + %t11 = load ptr, ptr %t6 + store i64 0, ptr %a12 + br label %find.cond10320 +find.cond10320: + %t13 = load i64, ptr %a12 + %t14 = icmp slt i64 %t13, %t10 + br i1 %t14, label %find.body10321, label %find.end10324 +find.body10321: + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i64 %t13 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + store { ptr, i64, i64 } %t8, ptr %a18 + %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) + %t20 = icmp ne i32 %t19, 0 + br i1 %t20, label %find.hit10322, label %find.next10323 +find.hit10322: + store i64 %t13, ptr %a9 + br label %find.end10324 +find.next10323: + %t21 = add i64 %t13, 1 + store i64 %t21, ptr %a12 + br label %find.cond10320 +find.end10324: + %t22 = load i64, ptr %a9 + store i64 %t22, ptr %a23 + %t24 = load i64, ptr %a23 + %t25 = icmp slt i64 %t24, 0 + br i1 %t25, label %then10325, label %endif10327 +then10325: + %t26 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t26 +endif10327: + %t27 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t28 = load i64, ptr %a23 + %t29 = load { ptr, i64, i64 }, ptr %t27 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range10328, label %inrange10329 +range10328: + call void @finch_panic_index(ptr @.str.6814, i64 84, i64 %t28, i64 %t30) + unreachable +inrange10329: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds %S.json.Json, ptr %t32, i64 %t28 + %t34 = load %S.json.Json, ptr %t33 + store %S.json.Json %t34, ptr %a35 + call void @finch.copy.S_json_Json(ptr %a36, ptr %a35) + %t37 = load %S.json.Json, ptr %a36 + ret %S.json.Json %t37 +} + +define internal %S.json.Json @finch.json.Json.at(ptr %self, i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a23 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp ne i32 %t3, 4 + br label %logic.from10330 +logic.from10330: + br i1 %t4, label %logic.end10332, label %logic.rhs10331 +logic.rhs10331: + %t5 = load i64, ptr %a1 + %t6 = icmp slt i64 %t5, 0 + br label %logic.rend10333 +logic.rend10333: + br label %logic.end10332 +logic.end10332: + %t7 = phi i1 [ true, %logic.from10330 ], [ %t6, %logic.rend10333 ] + br label %logic.from10334 +logic.from10334: + br i1 %t7, label %logic.end10336, label %logic.rhs10335 +logic.rhs10335: + %t8 = load i64, ptr %a1 + %t9 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = icmp sge i64 %t8, %t11 + br label %logic.rend10337 +logic.rend10337: + br label %logic.end10336 +logic.end10336: + %t13 = phi i1 [ true, %logic.from10334 ], [ %t12, %logic.rend10337 ] + br i1 %t13, label %then10338, label %endif10340 +then10338: + %t14 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t14 +endif10340: + %t15 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t16 = load i64, ptr %a1 + %t17 = load { ptr, i64, i64 }, ptr %t15 + %t18 = extractvalue { ptr, i64, i64 } %t17, 1 + %t19 = icmp uge i64 %t16, %t18 + br i1 %t19, label %range10341, label %inrange10342 +range10341: + call void @finch_panic_index(ptr @.str.6815, i64 92, i64 %t16, i64 %t18) + unreachable +inrange10342: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.json.Json, ptr %t20, i64 %t16 + %t22 = load %S.json.Json, ptr %t21 + store %S.json.Json %t22, ptr %a23 + call void @finch.copy.S_json_Json(ptr %a24, ptr %a23) + %t25 = load %S.json.Json, ptr %a24 + ret %S.json.Json %t25 +} + +define internal { ptr, i64, i64 } @finch.json.Json.str_or(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 3 + br i1 %t4, label %then10343, label %endif10345 +then10343: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 3 + %t6 = load { ptr, i64, i64 }, ptr %t5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + ret { ptr, i64, i64 } %t9 +endif10345: + %t10 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + ret { ptr, i64, i64 } %t13 +} + +define internal double @finch.json.Json.float_or(ptr %self, double %p0) { +entry: + %a1 = alloca double, align 16 + store double %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 2 + br i1 %t4, label %then10346, label %endif10348 +then10346: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 + %t6 = load double, ptr %t5 + ret double %t6 +endif10348: + %t7 = load double, ptr %a1 + ret double %t7 +} + +define internal i64 @finch.json.Json.int_or(ptr %self, i64 %p0) { +entry: + %a1 = alloca i64, align 16 + store i64 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 2 + br i1 %t4, label %then10349, label %endif10351 +then10349: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 + %t6 = load double, ptr %t5 + %t7 = fptosi double %t6 to i64 + ret i64 %t7 +endif10351: + %t8 = load i64, ptr %a1 + ret i64 %t8 +} + +define internal i1 @finch.json.Json.bool_or(ptr %self, i1 %p0) { +entry: + %a1 = alloca i1, align 16 + store i1 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 1 + br i1 %t4, label %then10352, label %endif10354 +then10352: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 + %t6 = load i1, ptr %t5 + ret i1 %t6 +endif10354: + %t7 = load i1, ptr %a1 + ret i1 %t7 +} + +define internal { ptr, i64, i64 } @finch.json.Json.names(ptr %self) { +entry: + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t2 = load { ptr, i64, i64 }, ptr %t1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch.copy.arr_str(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + ret { ptr, i64, i64 } %t5 +} + +define internal void @finch.json.Json.push(ptr %self, %S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + %a6 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i32 0, i32 1 + %t4 = load %S.json.Json, ptr %a1 + store %S.json.Json %t4, ptr %a5 + call void @finch.copy.S_json_Json(ptr %a6, ptr %a5) + %t7 = load %S.json.Json, ptr %a6 + %t8 = load i64, ptr %t3 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %t2, i64 %t9, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %t2 + %t11 = getelementptr inbounds %S.json.Json, ptr %t10, i64 %t8 + store %S.json.Json %t7, ptr %t11 + store i64 %t9, ptr %t3 + ret void +} + +define internal void @finch.json.Json.set(ptr %self, { ptr, i64, i64 } %p0, %S.json.Json %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.json.Json, align 16 + %a6 = alloca i64, align 16 + %a9 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a31 = alloca %S.json.Json, align 16 + %a32 = alloca %S.json.Json, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.json.Json, align 16 + %a48 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 + %t5 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a6 + %t7 = load i64, ptr %t4 + %t8 = load ptr, ptr %t3 + store i64 0, ptr %a9 + br label %find.cond10355 +find.cond10355: + %t10 = load i64, ptr %a9 + %t11 = icmp slt i64 %t10, %t7 + br i1 %t11, label %find.body10356, label %find.end10359 +find.body10356: + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 %t10 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } %t5, ptr %a15 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp ne i32 %t16, 0 + br i1 %t17, label %find.hit10357, label %find.next10358 +find.hit10357: + store i64 %t10, ptr %a6 + br label %find.end10359 +find.next10358: + %t18 = add i64 %t10, 1 + store i64 %t18, ptr %a9 + br label %find.cond10355 +find.end10359: + %t19 = load i64, ptr %a6 + store i64 %t19, ptr %a20 + %t21 = load i64, ptr %a20 + %t22 = icmp sge i64 %t21, 0 + br i1 %t22, label %then10360, label %endif10362 +then10360: + %t23 = load %S.json.Json, ptr %a2 + %t24 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t25 = load i64, ptr %a20 + %t26 = load { ptr, i64, i64 }, ptr %t24 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range10363, label %inrange10364 +range10363: + call void @finch_panic_index(ptr @.str.6816, i64 140, i64 %t25, i64 %t27) + unreachable +inrange10364: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 + store %S.json.Json %t23, ptr %a31 + call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) + %t33 = load %S.json.Json, ptr %a32 + store %S.json.Json %t33, ptr %t30 + ret void +endif10362: + %t34 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t36, ptr %a37 + call void @finch_str_copy(ptr %a38, ptr %a37) + %t39 = load { ptr, i64, i64 }, ptr %a38 + %t40 = load i64, ptr %t35 + %t41 = add i64 %t40, 1 + call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t34 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 + store { ptr, i64, i64 } %t39, ptr %t43 + store i64 %t41, ptr %t35 + %t44 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load %S.json.Json, ptr %a2 + store %S.json.Json %t46, ptr %a47 + call void @finch.copy.S_json_Json(ptr %a48, ptr %a47) + %t49 = load %S.json.Json, ptr %a48 + %t50 = load i64, ptr %t45 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t44 + %t53 = getelementptr inbounds %S.json.Json, ptr %t52, i64 %t50 + store %S.json.Json %t49, ptr %t53 + store i64 %t51, ptr %t45 + ret void +} + +define internal { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a17 = alloca i8, align 16 + %a20 = alloca i64, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t3 = call ptr @finch_alloc(i64 %t2) + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 + store { ptr, i64, i64 } { ptr @.str.6817, i64 1, i64 0 }, ptr %t4 + %t5 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t6 = insertvalue { ptr, i64, i64 } %t5, i64 1, 1 + %t7 = insertvalue { ptr, i64, i64 } %t6, i64 1, 2 + store { ptr, i64, i64 } %t7, ptr %a8 + store i64 0, ptr %a9 + br label %each.cond10365 +each.cond10365: + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = load i64, ptr %a9 + %t13 = icmp slt i64 %t12, %t11 + br i1 %t13, label %each.body10366, label %each.end10368 +each.body10366: + %t14 = load ptr, ptr %a1 + %t15 = getelementptr inbounds i8, ptr %t14, i64 %t12 + %t16 = load i8, ptr %t15 + store i8 %t16, ptr %a17 + %t18 = load i8, ptr %a17 + %t19 = zext i8 %t18 to i64 + store i64 %t19, ptr %a20 + %t21 = load i8, ptr %a17 + %t22 = icmp eq i8 %t21, 34 + br i1 %t22, label %then10369, label %else10370 +then10369: + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = add i64 %t24, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t25, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t26 = load ptr, ptr %a8 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t24 + store { ptr, i64, i64 } { ptr @.str.6818, i64 2, i64 0 }, ptr %t27 + store i64 %t25, ptr %t23 + br label %endif10371 +else10370: + %t28 = load i8, ptr %a17 + %t29 = icmp eq i8 %t28, 92 + br i1 %t29, label %then10372, label %else10373 +then10372: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %a8 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.6819, i64 2, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %endif10374 +else10373: + %t35 = load i8, ptr %a17 + %t36 = icmp eq i8 %t35, 10 + br i1 %t36, label %then10375, label %else10376 +then10375: + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a8 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.6820, i64 2, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + br label %endif10377 +else10376: + %t42 = load i8, ptr %a17 + %t43 = icmp eq i8 %t42, 13 + br i1 %t43, label %then10378, label %else10379 +then10378: + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = add i64 %t45, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t47 = load ptr, ptr %a8 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + store { ptr, i64, i64 } { ptr @.str.6821, i64 2, i64 0 }, ptr %t48 + store i64 %t46, ptr %t44 + br label %endif10380 +else10379: + %t49 = load i8, ptr %a17 + %t50 = icmp eq i8 %t49, 9 + br i1 %t50, label %then10381, label %else10382 +then10381: + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a8 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } { ptr @.str.6822, i64 2, i64 0 }, ptr %t55 + store i64 %t53, ptr %t51 + br label %endif10383 +else10382: + %t56 = load i64, ptr %a20 + %t57 = icmp slt i64 %t56, 32 + br i1 %t57, label %then10384, label %else10385 +then10384: + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t59 = load i64, ptr %a20 + %t60 = sdiv i64 %t59, 16 + %t61 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t60) + store { ptr, i64, i64 } { ptr @.str.6823, i64 4, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a62 + %t66 = load i64, ptr %a20 + %t67 = srem i64 %t66, 16 + %t68 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t67) + store { ptr, i64, i64 } %t65, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = load i64, ptr %t58 + %t74 = add i64 %t73, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t74, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t75 = load ptr, ptr %a8 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 %t73 + store { ptr, i64, i64 } %t72, ptr %t76 + store i64 %t74, ptr %t58 + br label %endif10386 +else10385: + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t78 = load i8, ptr %a17 + call void @finch_str_from_char(ptr %a79, i8 signext %t78) + %t80 = load { ptr, i64, i64 }, ptr %a79 + %t81 = load i64, ptr %t77 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %a8 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 + store { ptr, i64, i64 } %t80, ptr %t84 + store i64 %t82, ptr %t77 + br label %endif10386 +endif10386: + br label %endif10383 +endif10383: + br label %endif10380 +endif10380: + br label %endif10377 +endif10377: + br label %endif10374 +endif10374: + br label %endif10371 +endif10371: + br label %each.step10367 +each.step10367: + %t85 = load i64, ptr %a9 + %t86 = add i64 %t85, 1 + store i64 %t86, ptr %a9 + br label %each.cond10365 +each.end10368: + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = add i64 %t88, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t90 = load ptr, ptr %a8 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88 + store { ptr, i64, i64 } { ptr @.str.6824, i64 1, i64 0 }, ptr %t91 + store i64 %t89, ptr %t87 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6825, i64 0, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %a8, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + ret { ptr, i64, i64 } %t95 +} + +define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + store i64 %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6826, i64 16, i64 0 }, ptr %a2 + %t3 = load i64, ptr %a1 + %t4 = load { ptr, i64, i64 }, ptr %a2 + %t5 = extractvalue { ptr, i64, i64 } %t4, 1 + %t6 = icmp uge i64 %t3, %t5 + br i1 %t6, label %range10387, label %inrange10388 +range10387: + call void @finch_panic_index(ptr @.str.6827, i64 175, i64 %t3, i64 %t5) + unreachable +inrange10388: + %t7 = extractvalue { ptr, i64, i64 } %t4, 0 + %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 + %t9 = load i8, ptr %t8 + call void @finch_str_from_char(ptr %a10, i8 signext %t9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t11 +} + +define internal { ptr, i64, i64 } @finch.json.number_text(double %p0) { +entry: + %a1 = alloca double, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + store double %p0, ptr %a1 + %t2 = load double, ptr %a1 + %t3 = load double, ptr %a1 + %t4 = fptosi double %t3 to i64 + %t5 = sitofp i64 %t4 to double + %t6 = fcmp oeq double %t2, %t5 + br label %logic.from10389 +logic.from10389: + br i1 %t6, label %logic.rhs10390, label %logic.end10391 +logic.rhs10390: + %t7 = load double, ptr %a1 + %t8 = fneg double 1000000000000000.0 + %t9 = fcmp ogt double %t7, %t8 + br label %logic.rend10392 +logic.rend10392: + br label %logic.end10391 +logic.end10391: + %t10 = phi i1 [ false, %logic.from10389 ], [ %t9, %logic.rend10392 ] + br label %logic.from10393 +logic.from10393: + br i1 %t10, label %logic.rhs10394, label %logic.end10395 +logic.rhs10394: + %t11 = load double, ptr %a1 + %t12 = fcmp olt double %t11, 1000000000000000.0 + br label %logic.rend10396 +logic.rend10396: + br label %logic.end10395 +logic.end10395: + %t13 = phi i1 [ false, %logic.from10393 ], [ %t12, %logic.rend10396 ] + br i1 %t13, label %then10397, label %endif10399 +then10397: + %t14 = load double, ptr %a1 + %t15 = fptosi double %t14 to i64 + call void @finch_str_from_int(ptr %a16, i64 %t15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t17 +endif10399: + %t18 = load double, ptr %a1 + call void @finch_str_from_float(ptr %a19, double %t18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + ret { ptr, i64, i64 } %t20 +} + +define internal void @finch.json.write(%S.json.Json %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, ptr %p3) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca ptr, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca i64, align 16 + %a107 = alloca i64, align 16 + %a108 = alloca %S.json.Json, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca i64, align 16 + %a196 = alloca i64, align 16 + %a197 = alloca %S.json.Json, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store ptr %p3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6828, i64 0, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6829, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6830, i64 1, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.6831, i64 1, i64 0 }, ptr %a8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp sgt i64 %t10, 0 + br i1 %t11, label %then10400, label %endif10402 +then10400: + store { ptr, i64, i64 } { ptr @.str.6832, i64 1, i64 0 }, ptr %a5 + %t12 = load { ptr, i64, i64 }, ptr %a3 + %t13 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t12, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6833, i64 2, i64 0 }, ptr %a8 + br label %endif10402 +endif10402: + %t18 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 + %t19 = load i32, ptr %t18 + %t20 = icmp eq i32 %t19, 0 + br i1 %t20, label %match.arm10404, label %match.next10405 +match.arm10404: + %t21 = load ptr, ptr %a4 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic10406, label %ok10407 +panic10406: + call void @finch_panic(ptr @.str.6834, i64 200, ptr @.str.6835) + unreachable +ok10407: + %t23 = getelementptr inbounds %S.json.Writer, ptr %t21, i32 0, i32 0 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = add i64 %t25, 1 + call void @finch_arr_reserve(ptr %t23, i64 %t26, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t27 = load ptr, ptr %t23 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 %t25 + store { ptr, i64, i64 } { ptr @.str.6836, i64 4, i64 0 }, ptr %t28 + store i64 %t26, ptr %t24 + br label %match.end10403 +match.next10405: + %t29 = icmp eq i32 %t19, 1 + br i1 %t29, label %match.arm10408, label %match.next10409 +match.arm10408: + %t30 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 + %t31 = load i1, ptr %t30 + br i1 %t31, label %then10410, label %else10411 +then10410: + %t32 = load ptr, ptr %a4 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10413, label %ok10414 +panic10413: + call void @finch_panic(ptr @.str.6837, i64 203, ptr @.str.6838) + unreachable +ok10414: + %t34 = getelementptr inbounds %S.json.Writer, ptr %t32, i32 0, i32 0 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t36, 1 + call void @finch_arr_reserve(ptr %t34, i64 %t37, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t38 = load ptr, ptr %t34 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t36 + store { ptr, i64, i64 } { ptr @.str.6839, i64 4, i64 0 }, ptr %t39 + store i64 %t37, ptr %t35 + br label %endif10412 +else10411: + %t40 = load ptr, ptr %a4 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic10415, label %ok10416 +panic10415: + call void @finch_panic(ptr @.str.6840, i64 205, ptr @.str.6841) + unreachable +ok10416: + %t42 = getelementptr inbounds %S.json.Writer, ptr %t40, i32 0, i32 0 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t42, i64 %t45, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t42 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44 + store { ptr, i64, i64 } { ptr @.str.6842, i64 5, i64 0 }, ptr %t47 + store i64 %t45, ptr %t43 + br label %endif10412 +endif10412: + br label %match.end10403 +match.next10409: + %t48 = icmp eq i32 %t19, 2 + br i1 %t48, label %match.arm10417, label %match.next10418 +match.arm10417: + %t49 = load ptr, ptr %a4 + %t50 = icmp eq ptr %t49, null + br i1 %t50, label %panic10419, label %ok10420 +panic10419: + call void @finch_panic(ptr @.str.6843, i64 208, ptr @.str.6844) + unreachable +ok10420: + %t51 = getelementptr inbounds %S.json.Writer, ptr %t49, i32 0, i32 0 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1 + %t53 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 + %t54 = load double, ptr %t53 + %t55 = call { ptr, i64, i64 } @finch.json.number_text(double %t54) + %t56 = load i64, ptr %t52 + %t57 = add i64 %t56, 1 + call void @finch_arr_reserve(ptr %t51, i64 %t57, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t58 = load ptr, ptr %t51 + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t56 + store { ptr, i64, i64 } %t55, ptr %t59 + store i64 %t57, ptr %t52 + br label %match.end10403 +match.next10418: + %t60 = icmp eq i32 %t19, 3 + br i1 %t60, label %match.arm10421, label %match.next10422 +match.arm10421: + %t61 = load ptr, ptr %a4 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic10423, label %ok10424 +panic10423: + call void @finch_panic(ptr @.str.6845, i64 209, ptr @.str.6846) + unreachable +ok10424: + %t63 = getelementptr inbounds %S.json.Writer, ptr %t61, i32 0, i32 0 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 + %t65 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 + %t66 = load { ptr, i64, i64 }, ptr %t65 + %t67 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t66) + %t68 = load i64, ptr %t64 + %t69 = add i64 %t68, 1 + call void @finch_arr_reserve(ptr %t63, i64 %t69, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t70 = load ptr, ptr %t63 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t68 + store { ptr, i64, i64 } %t67, ptr %t71 + store i64 %t69, ptr %t64 + br label %match.end10403 +match.next10422: + %t72 = icmp eq i32 %t19, 4 + br i1 %t72, label %match.arm10425, label %match.next10426 +match.arm10425: + %t73 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = icmp eq i64 %t75, 0 + br i1 %t76, label %then10427, label %endif10429 +then10427: + %t77 = load ptr, ptr %a4 + %t78 = icmp eq ptr %t77, null + br i1 %t78, label %panic10430, label %ok10431 +panic10430: + call void @finch_panic(ptr @.str.6847, i64 212, ptr @.str.6848) + unreachable +ok10431: + %t79 = getelementptr inbounds %S.json.Writer, ptr %t77, i32 0, i32 0 + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 + %t81 = load i64, ptr %t80 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %t79, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %t79 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 + store { ptr, i64, i64 } { ptr @.str.6849, i64 2, i64 0 }, ptr %t84 + store i64 %t82, ptr %t80 + ret void +endif10429: + %t85 = load ptr, ptr %a4 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic10432, label %ok10433 +panic10432: + call void @finch_panic(ptr @.str.6850, i64 215, ptr @.str.6851) + unreachable +ok10433: + %t87 = getelementptr inbounds %S.json.Writer, ptr %t85, i32 0, i32 0 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 + %t89 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6852, i64 1, i64 0 }, ptr %a91 + store { ptr, i64, i64 } %t89, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a90 + %t94 = load i64, ptr %t88 + %t95 = add i64 %t94, 1 + call void @finch_arr_reserve(ptr %t87, i64 %t95, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t96 = load ptr, ptr %t87 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t94 + store { ptr, i64, i64 } %t93, ptr %t97 + store i64 %t95, ptr %t88 + %t98 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a99 + br label %each.cond10434 +each.cond10434: + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = load i64, ptr %a99 + %t103 = icmp slt i64 %t102, %t101 + br i1 %t103, label %each.body10435, label %each.end10437 +each.body10435: + %t104 = load ptr, ptr %t98 + %t105 = getelementptr inbounds %S.json.Json, ptr %t104, i64 %t102 + %t106 = load %S.json.Json, ptr %t105 + store i64 %t102, ptr %a107 + store %S.json.Json %t106, ptr %a108 + %t109 = load i64, ptr %a107 + %t110 = icmp sgt i64 %t109, 0 + br i1 %t110, label %then10438, label %endif10440 +then10438: + %t111 = load ptr, ptr %a4 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic10441, label %ok10442 +panic10441: + call void @finch_panic(ptr @.str.6853, i64 218, ptr @.str.6854) + unreachable +ok10442: + %t113 = getelementptr inbounds %S.json.Writer, ptr %t111, i32 0, i32 0 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %a7 + %t116 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t115, ptr %a118 + store { ptr, i64, i64 } %t116, ptr %a119 + call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a117 + %t121 = load i64, ptr %t114 + %t122 = add i64 %t121, 1 + call void @finch_arr_reserve(ptr %t113, i64 %t122, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t123 = load ptr, ptr %t113 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t121 + store { ptr, i64, i64 } %t120, ptr %t124 + store i64 %t122, ptr %t114 + br label %endif10440 +endif10440: + %t125 = load ptr, ptr %a4 + %t126 = icmp eq ptr %t125, null + br i1 %t126, label %panic10443, label %ok10444 +panic10443: + call void @finch_panic(ptr @.str.6855, i64 220, ptr @.str.6856) + unreachable +ok10444: + %t127 = getelementptr inbounds %S.json.Writer, ptr %t125, i32 0, i32 0 + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 + %t129 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_copy(ptr %a131, ptr %a130) + %t132 = load { ptr, i64, i64 }, ptr %a131 + %t133 = load i64, ptr %t128 + %t134 = add i64 %t133, 1 + call void @finch_arr_reserve(ptr %t127, i64 %t134, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t135 = load ptr, ptr %t127 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 %t133 + store { ptr, i64, i64 } %t132, ptr %t136 + store i64 %t134, ptr %t128 + %t137 = load %S.json.Json, ptr %a108 + %t138 = load { ptr, i64, i64 }, ptr %a2 + %t139 = load { ptr, i64, i64 }, ptr %a6 + %t140 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139, ptr %t140) + br label %each.step10436 +each.step10436: + %t141 = load i64, ptr %a99 + %t142 = add i64 %t141, 1 + store i64 %t142, ptr %a99 + br label %each.cond10434 +each.end10437: + %t143 = load ptr, ptr %a4 + %t144 = icmp eq ptr %t143, null + br i1 %t144, label %panic10445, label %ok10446 +panic10445: + call void @finch_panic(ptr @.str.6857, i64 223, ptr @.str.6858) + unreachable +ok10446: + %t145 = getelementptr inbounds %S.json.Writer, ptr %t143, i32 0, i32 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 + %t147 = load { ptr, i64, i64 }, ptr %a5 + %t148 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t147, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.6859, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + %t157 = load i64, ptr %t146 + %t158 = add i64 %t157, 1 + call void @finch_arr_reserve(ptr %t145, i64 %t158, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t145 + %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %t159, i64 %t157 + store { ptr, i64, i64 } %t156, ptr %t160 + store i64 %t158, ptr %t146 + br label %match.end10403 +match.next10426: + %t161 = icmp eq i32 %t19, 5 + br i1 %t161, label %match.arm10447, label %match.next10448 +match.arm10447: + %t162 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 + %t164 = load i64, ptr %t163 + %t165 = icmp eq i64 %t164, 0 + br i1 %t165, label %then10449, label %endif10451 +then10449: + %t166 = load ptr, ptr %a4 + %t167 = icmp eq ptr %t166, null + br i1 %t167, label %panic10452, label %ok10453 +panic10452: + call void @finch_panic(ptr @.str.6860, i64 227, ptr @.str.6861) + unreachable +ok10453: + %t168 = getelementptr inbounds %S.json.Writer, ptr %t166, i32 0, i32 0 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = add i64 %t170, 1 + call void @finch_arr_reserve(ptr %t168, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t172 = load ptr, ptr %t168 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 + store { ptr, i64, i64 } { ptr @.str.6862, i64 2, i64 0 }, ptr %t173 + store i64 %t171, ptr %t169 + ret void +endif10451: + %t174 = load ptr, ptr %a4 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic10454, label %ok10455 +panic10454: + call void @finch_panic(ptr @.str.6863, i64 230, ptr @.str.6864) + unreachable +ok10455: + %t176 = getelementptr inbounds %S.json.Writer, ptr %t174, i32 0, i32 0 + %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i32 0, i32 1 + %t178 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6865, i64 1, i64 0 }, ptr %a180 + store { ptr, i64, i64 } %t178, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a179 + %t183 = load i64, ptr %t177 + %t184 = add i64 %t183, 1 + call void @finch_arr_reserve(ptr %t176, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t185 = load ptr, ptr %t176 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 + store { ptr, i64, i64 } %t182, ptr %t186 + store i64 %t184, ptr %t177 + %t187 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a188 + br label %each.cond10456 +each.cond10456: + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 + %t190 = load i64, ptr %t189 + %t191 = load i64, ptr %a188 + %t192 = icmp slt i64 %t191, %t190 + br i1 %t192, label %each.body10457, label %each.end10459 +each.body10457: + %t193 = load ptr, ptr %t187 + %t194 = getelementptr inbounds %S.json.Json, ptr %t193, i64 %t191 + %t195 = load %S.json.Json, ptr %t194 + store i64 %t191, ptr %a196 + store %S.json.Json %t195, ptr %a197 + %t198 = load i64, ptr %a196 + %t199 = icmp sgt i64 %t198, 0 + br i1 %t199, label %then10460, label %endif10462 +then10460: + %t200 = load ptr, ptr %a4 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic10463, label %ok10464 +panic10463: + call void @finch_panic(ptr @.str.6866, i64 233, ptr @.str.6867) + unreachable +ok10464: + %t202 = getelementptr inbounds %S.json.Writer, ptr %t200, i32 0, i32 0 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 + %t204 = load { ptr, i64, i64 }, ptr %a7 + %t205 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t204, ptr %a207 + store { ptr, i64, i64 } %t205, ptr %a208 + call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) + %t209 = load { ptr, i64, i64 }, ptr %a206 + %t210 = load i64, ptr %t203 + %t211 = add i64 %t210, 1 + call void @finch_arr_reserve(ptr %t202, i64 %t211, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t212 = load ptr, ptr %t202 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t210 + store { ptr, i64, i64 } %t209, ptr %t213 + store i64 %t211, ptr %t203 + br label %endif10462 +endif10462: + %t214 = load ptr, ptr %a4 + %t215 = icmp eq ptr %t214, null + br i1 %t215, label %panic10465, label %ok10466 +panic10465: + call void @finch_panic(ptr @.str.6868, i64 235, ptr @.str.6869) + unreachable +ok10466: + %t216 = getelementptr inbounds %S.json.Writer, ptr %t214, i32 0, i32 0 + %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i32 0, i32 1 + %t218 = load { ptr, i64, i64 }, ptr %a6 + %t219 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 + %t220 = load i64, ptr %a196 + %t221 = load { ptr, i64, i64 }, ptr %t219 + %t222 = extractvalue { ptr, i64, i64 } %t221, 1 + %t223 = icmp uge i64 %t220, %t222 + br i1 %t223, label %range10467, label %inrange10468 +range10467: + call void @finch_panic_index(ptr @.str.6870, i64 235, i64 %t220, i64 %t222) + unreachable +inrange10468: + %t224 = extractvalue { ptr, i64, i64 } %t221, 0 + %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i64 %t220 + %t226 = load { ptr, i64, i64 }, ptr %t225 + %t227 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t226) + store { ptr, i64, i64 } %t218, ptr %a229 + store { ptr, i64, i64 } %t227, ptr %a230 + call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a228 + %t232 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t231, ptr %a234 + store { ptr, i64, i64 } %t232, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a233 + %t237 = load i64, ptr %t217 + %t238 = add i64 %t237, 1 + call void @finch_arr_reserve(ptr %t216, i64 %t238, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t239 = load ptr, ptr %t216 + %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i64 %t237 + store { ptr, i64, i64 } %t236, ptr %t240 + store i64 %t238, ptr %t217 + %t241 = load %S.json.Json, ptr %a197 + %t242 = load { ptr, i64, i64 }, ptr %a2 + %t243 = load { ptr, i64, i64 }, ptr %a6 + %t244 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, ptr %t244) + br label %each.step10458 +each.step10458: + %t245 = load i64, ptr %a188 + %t246 = add i64 %t245, 1 + store i64 %t246, ptr %a188 + br label %each.cond10456 +each.end10459: + %t247 = load ptr, ptr %a4 + %t248 = icmp eq ptr %t247, null + br i1 %t248, label %panic10469, label %ok10470 +panic10469: + call void @finch_panic(ptr @.str.6871, i64 238, ptr @.str.6872) + unreachable +ok10470: + %t249 = getelementptr inbounds %S.json.Writer, ptr %t247, i32 0, i32 0 + %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t249, i32 0, i32 1 + %t251 = load { ptr, i64, i64 }, ptr %a5 + %t252 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t251, ptr %a254 + store { ptr, i64, i64 } %t252, ptr %a255 + call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a253 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6873, i64 1, i64 0 }, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + %t260 = load { ptr, i64, i64 }, ptr %a257 + %t261 = load i64, ptr %t250 + %t262 = add i64 %t261, 1 + call void @finch_arr_reserve(ptr %t249, i64 %t262, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t263 = load ptr, ptr %t249 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i64 %t261 + store { ptr, i64, i64 } %t260, ptr %t264 + store i64 %t262, ptr %t250 + br label %match.end10403 +match.next10448: + br i1 true, label %panic10471, label %ok10472 +panic10471: + call void @finch_panic(ptr @.str.6874, i64 199, ptr @.str.6875) + unreachable +ok10472: + unreachable +match.end10403: + ret void +} + +define internal { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Writer, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Writer zeroinitializer, ptr %a2 + %t3 = load %S.json.Json, ptr %a1 + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.6876, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6877, i64 0, i64 0 }, ptr %a2) + %t4 = getelementptr inbounds %S.json.Writer, ptr %a2, i32 0, i32 0 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6878, i64 0, i64 0 }, ptr %a6 + call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t8 +} + +define internal { ptr, i64, i64 } @finch.json.pretty(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Writer, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Writer zeroinitializer, ptr %a2 + %t3 = load %S.json.Json, ptr %a1 + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.6879, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.6880, i64 0, i64 0 }, ptr %a2) + %t4 = getelementptr inbounds %S.json.Writer, ptr %a2, i32 0, i32 0 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6881, i64 0, i64 0 }, ptr %a6 + call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t8 +} + +define internal { ptr, i64, i64 } @finch.json.where(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store i64 1, ptr %a2 + store i64 1, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic10473, label %ok10474 +panic10473: + call void @finch_panic(ptr @.str.6882, i64 268, ptr @.str.6883) + unreachable +ok10474: + %t6 = getelementptr inbounds %S.json.Reader, ptr %t4, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond10475 +for.cond10475: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body10476, label %for.end10478 +for.body10476: + %t11 = load i64, ptr %a8 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10479, label %ok10480 +panic10479: + call void @finch_panic(ptr @.str.6884, i64 269, ptr @.str.6885) + unreachable +ok10480: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = icmp slt i64 %t11, %t16 + br label %logic.from10481 +logic.from10481: + br i1 %t17, label %logic.rhs10482, label %logic.end10483 +logic.rhs10482: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic10484, label %ok10485 +panic10484: + call void @finch_panic(ptr @.str.6886, i64 269, ptr @.str.6887) + unreachable +ok10485: + %t20 = getelementptr inbounds %S.json.Reader, ptr %t18, i32 0, i32 0 + %t21 = load i64, ptr %a8 + %t22 = load { ptr, i64, i64 }, ptr %t20 + %t23 = extractvalue { ptr, i64, i64 } %t22, 1 + %t24 = icmp uge i64 %t21, %t23 + br i1 %t24, label %range10486, label %inrange10487 +range10486: + call void @finch_panic_index(ptr @.str.6888, i64 269, i64 %t21, i64 %t23) + unreachable +inrange10487: + %t25 = extractvalue { ptr, i64, i64 } %t22, 0 + %t26 = getelementptr inbounds i8, ptr %t25, i64 %t21 + %t27 = load i8, ptr %t26 + %t28 = icmp eq i8 %t27, 10 + br label %logic.rend10488 +logic.rend10488: + br label %logic.end10483 +logic.end10483: + %t29 = phi i1 [ false, %logic.from10481 ], [ %t28, %logic.rend10488 ] + br i1 %t29, label %then10489, label %else10490 +then10489: + %t30 = load i64, ptr %a2 + %t31 = add i64 %t30, 1 + store i64 %t31, ptr %a2 + store i64 1, ptr %a3 + br label %endif10491 +else10490: + %t32 = load i64, ptr %a3 + %t33 = add i64 %t32, 1 + store i64 %t33, ptr %a3 + br label %endif10491 +endif10491: + br label %for.step10477 +for.step10477: + %t34 = load i64, ptr %a8 + %t35 = add i64 %t34, 1 + store i64 %t35, ptr %a8 + br label %for.cond10475 +for.end10478: + %t36 = load i64, ptr %a2 + call void @finch_str_from_int(ptr %a37, i64 %t36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6889, i64 5, i64 0 }, ptr %a40 + store { ptr, i64, i64 } %t38, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.6890, i64 9, i64 0 }, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a43 + %t47 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a50 + ret { ptr, i64, i64 } %t53 +} + +define internal i8 @finch.json.peek(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10492, label %ok10493 +panic10492: + call void @finch_panic(ptr @.str.6891, i64 280, ptr @.str.6892) + unreachable +ok10493: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10494, label %ok10495 +panic10494: + call void @finch_panic(ptr @.str.6893, i64 280, ptr @.str.6894) + unreachable +ok10495: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 0 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp slt i64 %t5, %t10 + br i1 %t11, label %then10496, label %endif10498 +then10496: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10499, label %ok10500 +panic10499: + call void @finch_panic(ptr @.str.6895, i64 281, ptr @.str.6896) + unreachable +ok10500: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10501, label %ok10502 +panic10501: + call void @finch_panic(ptr @.str.6897, i64 281, ptr @.str.6898) + unreachable +ok10502: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load { ptr, i64, i64 }, ptr %t14 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range10503, label %inrange10504 +range10503: + call void @finch_panic_index(ptr @.str.6899, i64 281, i64 %t18, i64 %t20) + unreachable +inrange10504: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 + %t24 = load i8, ptr %t23 + ret i8 %t24 +endif10498: + %t25 = trunc i64 0 to i8 + ret i8 %t25 +} + +define internal void @finch.json.skip_space(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + br label %while.cond10505 +while.cond10505: + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10508, label %ok10509 +panic10508: + call void @finch_panic(ptr @.str.6900, i64 287, ptr @.str.6901) + unreachable +ok10509: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10510, label %ok10511 +panic10510: + call void @finch_panic(ptr @.str.6902, i64 287, ptr @.str.6903) + unreachable +ok10511: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 0 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp slt i64 %t5, %t10 + br label %logic.from10512 +logic.from10512: + br i1 %t11, label %logic.rhs10513, label %logic.end10514 +logic.rhs10513: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10515, label %ok10516 +panic10515: + call void @finch_panic(ptr @.str.6904, i64 287, ptr @.str.6905) + unreachable +ok10516: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10517, label %ok10518 +panic10517: + call void @finch_panic(ptr @.str.6906, i64 287, ptr @.str.6907) + unreachable +ok10518: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load { ptr, i64, i64 }, ptr %t14 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range10519, label %inrange10520 +range10519: + call void @finch_panic_index(ptr @.str.6908, i64 287, i64 %t18, i64 %t20) + unreachable +inrange10520: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 + %t24 = load i8, ptr %t23 + %t25 = icmp eq i8 %t24, 32 + br label %logic.from10521 +logic.from10521: + br i1 %t25, label %logic.end10523, label %logic.rhs10522 +logic.rhs10522: + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic10524, label %ok10525 +panic10524: + call void @finch_panic(ptr @.str.6909, i64 287, ptr @.str.6910) + unreachable +ok10525: + %t28 = getelementptr inbounds %S.json.Reader, ptr %t26, i32 0, i32 0 + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic10526, label %ok10527 +panic10526: + call void @finch_panic(ptr @.str.6911, i64 287, ptr @.str.6912) + unreachable +ok10527: + %t31 = getelementptr inbounds %S.json.Reader, ptr %t29, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = load { ptr, i64, i64 }, ptr %t28 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 %t32, %t34 + br i1 %t35, label %range10528, label %inrange10529 +range10528: + call void @finch_panic_index(ptr @.str.6913, i64 287, i64 %t32, i64 %t34) + unreachable +inrange10529: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 + %t38 = load i8, ptr %t37 + %t39 = icmp eq i8 %t38, 10 + br label %logic.rend10530 +logic.rend10530: + br label %logic.end10523 +logic.end10523: + %t40 = phi i1 [ true, %logic.from10521 ], [ %t39, %logic.rend10530 ] + br label %logic.from10531 +logic.from10531: + br i1 %t40, label %logic.end10533, label %logic.rhs10532 +logic.rhs10532: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic10534, label %ok10535 +panic10534: + call void @finch_panic(ptr @.str.6914, i64 287, ptr @.str.6915) + unreachable +ok10535: + %t43 = getelementptr inbounds %S.json.Reader, ptr %t41, i32 0, i32 0 + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic10536, label %ok10537 +panic10536: + call void @finch_panic(ptr @.str.6916, i64 287, ptr @.str.6917) + unreachable +ok10537: + %t46 = getelementptr inbounds %S.json.Reader, ptr %t44, i32 0, i32 1 + %t47 = load i64, ptr %t46 + %t48 = load { ptr, i64, i64 }, ptr %t43 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range10538, label %inrange10539 +range10538: + call void @finch_panic_index(ptr @.str.6918, i64 287, i64 %t47, i64 %t49) + unreachable +inrange10539: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t47 + %t53 = load i8, ptr %t52 + %t54 = icmp eq i8 %t53, 9 + br label %logic.rend10540 +logic.rend10540: + br label %logic.end10533 +logic.end10533: + %t55 = phi i1 [ true, %logic.from10531 ], [ %t54, %logic.rend10540 ] + br label %logic.from10541 +logic.from10541: + br i1 %t55, label %logic.end10543, label %logic.rhs10542 +logic.rhs10542: + %t56 = load ptr, ptr %a1 + %t57 = icmp eq ptr %t56, null + br i1 %t57, label %panic10544, label %ok10545 +panic10544: + call void @finch_panic(ptr @.str.6919, i64 287, ptr @.str.6920) + unreachable +ok10545: + %t58 = getelementptr inbounds %S.json.Reader, ptr %t56, i32 0, i32 0 + %t59 = load ptr, ptr %a1 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic10546, label %ok10547 +panic10546: + call void @finch_panic(ptr @.str.6921, i64 287, ptr @.str.6922) + unreachable +ok10547: + %t61 = getelementptr inbounds %S.json.Reader, ptr %t59, i32 0, i32 1 + %t62 = load i64, ptr %t61 + %t63 = load { ptr, i64, i64 }, ptr %t58 + %t64 = extractvalue { ptr, i64, i64 } %t63, 1 + %t65 = icmp uge i64 %t62, %t64 + br i1 %t65, label %range10548, label %inrange10549 +range10548: + call void @finch_panic_index(ptr @.str.6923, i64 287, i64 %t62, i64 %t64) + unreachable +inrange10549: + %t66 = extractvalue { ptr, i64, i64 } %t63, 0 + %t67 = getelementptr inbounds i8, ptr %t66, i64 %t62 + %t68 = load i8, ptr %t67 + %t69 = icmp eq i8 %t68, 13 + br label %logic.rend10550 +logic.rend10550: + br label %logic.end10543 +logic.end10543: + %t70 = phi i1 [ true, %logic.from10541 ], [ %t69, %logic.rend10550 ] + br label %logic.rend10551 +logic.rend10551: + br label %logic.end10514 +logic.end10514: + %t71 = phi i1 [ false, %logic.from10512 ], [ %t70, %logic.rend10551 ] + br i1 %t71, label %while.body10506, label %while.end10507 +while.body10506: + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic10552, label %ok10553 +panic10552: + call void @finch_panic(ptr @.str.6924, i64 288, ptr @.str.6925) + unreachable +ok10553: + %t74 = getelementptr inbounds %S.json.Reader, ptr %t72, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = add i64 %t75, 1 + store i64 %t76, ptr %t74 + br label %while.cond10505 +while.end10507: + ret void +} + +define internal { ptr, i64, i64 } @finch.json.unexpected(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic10554, label %ok10555 +panic10554: + call void @finch_panic(ptr @.str.6926, i64 293, ptr @.str.6927) + unreachable +ok10555: + %t5 = getelementptr inbounds %S.json.Reader, ptr %t3, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic10556, label %ok10557 +panic10556: + call void @finch_panic(ptr @.str.6928, i64 293, ptr @.str.6929) + unreachable +ok10557: + %t9 = getelementptr inbounds %S.json.Reader, ptr %t7, i32 0, i32 0 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = icmp sge i64 %t6, %t11 + br i1 %t12, label %then10558, label %endif10560 +then10558: + %t13 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6930, i64 26, i64 0 }, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6931, i64 12, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a18 + %t22 = load ptr, ptr %a1 + %t23 = call { ptr, i64, i64 } @finch.json.where(ptr %t22) + store { ptr, i64, i64 } %t21, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t27, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.6932, i64 1, i64 0 }, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a28 + ret { ptr, i64, i64 } %t31 +endif10560: + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10561, label %ok10562 +panic10561: + call void @finch_panic(ptr @.str.6934, i64 296, ptr @.str.6935) + unreachable +ok10562: + %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 0 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic10563, label %ok10564 +panic10563: + call void @finch_panic(ptr @.str.6936, i64 296, ptr @.str.6937) + unreachable +ok10564: + %t37 = getelementptr inbounds %S.json.Reader, ptr %t35, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = load { ptr, i64, i64 }, ptr %t34 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range10565, label %inrange10566 +range10565: + call void @finch_panic_index(ptr @.str.6938, i64 296, i64 %t38, i64 %t40) + unreachable +inrange10566: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + call void @finch_str_from_char(ptr %a45, i8 signext %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6933, i64 13, i64 0 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6939, i64 8, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a51 + %t55 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t54, ptr %a57 + store { ptr, i64, i64 } %t55, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.6940, i64 12, i64 0 }, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + %t64 = load ptr, ptr %a1 + %t65 = call { ptr, i64, i64 } @finch.json.where(ptr %t64) + store { ptr, i64, i64 } %t63, ptr %a67 + store { ptr, i64, i64 } %t65, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.6941, i64 1, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a70 + ret { ptr, i64, i64 } %t73 +} + +define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic10567, label %ok10568 +panic10567: + call void @finch_panic(ptr @.str.6942, i64 301, ptr @.str.6943) + unreachable +ok10568: + %t5 = getelementptr inbounds %S.json.Reader, ptr %t3, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic10569, label %ok10570 +panic10569: + call void @finch_panic(ptr @.str.6944, i64 301, ptr @.str.6945) + unreachable +ok10570: + %t10 = getelementptr inbounds %S.json.Reader, ptr %t8, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = sub i64 %t7, %t11 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t12, %t14 + br label %logic.from10571 +logic.from10571: + br i1 %t15, label %logic.rhs10572, label %logic.end10573 +logic.rhs10572: + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic10574, label %ok10575 +panic10574: + call void @finch_panic(ptr @.str.6946, i64 301, ptr @.str.6947) + unreachable +ok10575: + %t18 = getelementptr inbounds %S.json.Reader, ptr %t16, i32 0, i32 0 + %t19 = load { ptr, i64, i64 }, ptr %t18 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic10576, label %ok10577 +panic10576: + call void @finch_panic(ptr @.str.6949, i64 301, ptr @.str.6950) + unreachable +ok10577: + %t24 = getelementptr inbounds %S.json.Reader, ptr %t22, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic10578, label %ok10579 +panic10578: + call void @finch_panic(ptr @.str.6951, i64 301, ptr @.str.6952) + unreachable +ok10579: + %t28 = getelementptr inbounds %S.json.Reader, ptr %t26, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t29, %t31 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 %t25, i64 %t32, ptr @.str.6948, i64 301) + %t33 = load { ptr, i64, i64 }, ptr %a21 + %t34 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } %t34, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br label %logic.rend10580 +logic.rend10580: + br label %logic.end10573 +logic.end10573: + %t39 = phi i1 [ false, %logic.from10571 ], [ %t38, %logic.rend10580 ] + ret i1 %t39 +} + +define internal { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = load { ptr, i64, i64 }, ptr %a2 + %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) + %t6 = xor i1 %t5, true + br i1 %t6, label %then10581, label %endif10583 +then10581: + %t7 = load ptr, ptr %a1 + %t8 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6953, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6954, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t16) + %t18 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t17, 2 + ret { i1, i8, { ptr, i64, i64 } } %t18 +endif10583: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t20 = load i64, ptr %t19 + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic10584, label %ok10585 +panic10584: + call void @finch_panic(ptr @.str.6955, i64 308, ptr @.str.6956) + unreachable +ok10585: + %t23 = getelementptr inbounds %S.json.Reader, ptr %t21, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = add i64 %t24, %t20 + store i64 %t25, ptr %t23 + ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } +} + +define internal i64 @finch.json.hex_value(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 48 + br label %logic.from10586 +logic.from10586: + br i1 %t3, label %logic.rhs10587, label %logic.end10588 +logic.rhs10587: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 57 + br label %logic.rend10589 +logic.rend10589: + br label %logic.end10588 +logic.end10588: + %t6 = phi i1 [ false, %logic.from10586 ], [ %t5, %logic.rend10589 ] + br i1 %t6, label %then10590, label %endif10592 +then10590: + %t7 = load i8, ptr %a1 + %t8 = zext i8 %t7 to i64 + %t9 = zext i8 48 to i64 + %t10 = sub i64 %t8, %t9 + ret i64 %t10 +endif10592: + %t11 = load i8, ptr %a1 + %t12 = icmp uge i8 %t11, 97 + br label %logic.from10593 +logic.from10593: + br i1 %t12, label %logic.rhs10594, label %logic.end10595 +logic.rhs10594: + %t13 = load i8, ptr %a1 + %t14 = icmp ule i8 %t13, 102 + br label %logic.rend10596 +logic.rend10596: + br label %logic.end10595 +logic.end10595: + %t15 = phi i1 [ false, %logic.from10593 ], [ %t14, %logic.rend10596 ] + br i1 %t15, label %then10597, label %endif10599 +then10597: + %t16 = load i8, ptr %a1 + %t17 = zext i8 %t16 to i64 + %t18 = zext i8 97 to i64 + %t19 = sub i64 %t17, %t18 + %t20 = add i64 %t19, 10 + ret i64 %t20 +endif10599: + %t21 = load i8, ptr %a1 + %t22 = icmp uge i8 %t21, 65 + br label %logic.from10600 +logic.from10600: + br i1 %t22, label %logic.rhs10601, label %logic.end10602 +logic.rhs10601: + %t23 = load i8, ptr %a1 + %t24 = icmp ule i8 %t23, 70 + br label %logic.rend10603 +logic.rend10603: + br label %logic.end10602 +logic.end10602: + %t25 = phi i1 [ false, %logic.from10600 ], [ %t24, %logic.rend10603 ] + br i1 %t25, label %then10604, label %endif10606 +then10604: + %t26 = load i8, ptr %a1 + %t27 = zext i8 %t26 to i64 + %t28 = zext i8 65 to i64 + %t29 = sub i64 %t27, %t28 + %t30 = add i64 %t29, 10 + ret i64 %t30 +endif10606: + ret i64 -1 +} + +define internal { ptr, i64, i64 } @finch.json.utf8(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + store i64 %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + %t3 = load i64, ptr %a1 + %t4 = icmp slt i64 %t3, 128 + br i1 %t4, label %then10607, label %else10608 +then10607: + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t6 = load i64, ptr %a1 + %t7 = trunc i64 %t6 to i8 + %t8 = load i64, ptr %t5 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t9, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a2 + %t11 = getelementptr inbounds i8, ptr %t10, i64 %t8 + store i8 %t7, ptr %t11 + store i64 %t9, ptr %t5 + br label %endif10609 +else10608: + %t12 = load i64, ptr %a1 + %t13 = icmp slt i64 %t12, 2048 + br i1 %t13, label %then10610, label %else10611 +then10610: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t15 = load i64, ptr %a1 + %t16 = sdiv i64 %t15, 64 + %t17 = add i64 192, %t16 + %t18 = trunc i64 %t17 to i8 + %t19 = load i64, ptr %t14 + %t20 = add i64 %t19, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t20, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t21 = load ptr, ptr %a2 + %t22 = getelementptr inbounds i8, ptr %t21, i64 %t19 + store i8 %t18, ptr %t22 + store i64 %t20, ptr %t14 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t24 = load i64, ptr %a1 + %t25 = srem i64 %t24, 64 + %t26 = add i64 128, %t25 + %t27 = trunc i64 %t26 to i8 + %t28 = load i64, ptr %t23 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t29, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a2 + %t31 = getelementptr inbounds i8, ptr %t30, i64 %t28 + store i8 %t27, ptr %t31 + store i64 %t29, ptr %t23 + br label %endif10612 +else10611: + %t32 = load i64, ptr %a1 + %t33 = icmp slt i64 %t32, 65536 + br i1 %t33, label %then10613, label %else10614 +then10613: + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t35 = load i64, ptr %a1 + %t36 = sdiv i64 %t35, 4096 + %t37 = add i64 224, %t36 + %t38 = trunc i64 %t37 to i8 + %t39 = load i64, ptr %t34 + %t40 = add i64 %t39, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t40, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t41 = load ptr, ptr %a2 + %t42 = getelementptr inbounds i8, ptr %t41, i64 %t39 + store i8 %t38, ptr %t42 + store i64 %t40, ptr %t34 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t44 = load i64, ptr %a1 + %t45 = sdiv i64 %t44, 64 + %t46 = srem i64 %t45, 64 + %t47 = add i64 128, %t46 + %t48 = trunc i64 %t47 to i8 + %t49 = load i64, ptr %t43 + %t50 = add i64 %t49, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t50, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t51 = load ptr, ptr %a2 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t49 + store i8 %t48, ptr %t52 + store i64 %t50, ptr %t43 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t54 = load i64, ptr %a1 + %t55 = srem i64 %t54, 64 + %t56 = add i64 128, %t55 + %t57 = trunc i64 %t56 to i8 + %t58 = load i64, ptr %t53 + %t59 = add i64 %t58, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t59, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t60 = load ptr, ptr %a2 + %t61 = getelementptr inbounds i8, ptr %t60, i64 %t58 + store i8 %t57, ptr %t61 + store i64 %t59, ptr %t53 + br label %endif10615 +else10614: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t63 = load i64, ptr %a1 + %t64 = sdiv i64 %t63, 262144 + %t65 = add i64 240, %t64 + %t66 = trunc i64 %t65 to i8 + %t67 = load i64, ptr %t62 + %t68 = add i64 %t67, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t68, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t69 = load ptr, ptr %a2 + %t70 = getelementptr inbounds i8, ptr %t69, i64 %t67 + store i8 %t66, ptr %t70 + store i64 %t68, ptr %t62 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t72 = load i64, ptr %a1 + %t73 = sdiv i64 %t72, 4096 + %t74 = srem i64 %t73, 64 + %t75 = add i64 128, %t74 + %t76 = trunc i64 %t75 to i8 + %t77 = load i64, ptr %t71 + %t78 = add i64 %t77, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t78, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t79 = load ptr, ptr %a2 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t77 + store i8 %t76, ptr %t80 + store i64 %t78, ptr %t71 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t82 = load i64, ptr %a1 + %t83 = sdiv i64 %t82, 64 + %t84 = srem i64 %t83, 64 + %t85 = add i64 128, %t84 + %t86 = trunc i64 %t85 to i8 + %t87 = load i64, ptr %t81 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t88, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %a2 + %t90 = getelementptr inbounds i8, ptr %t89, i64 %t87 + store i8 %t86, ptr %t90 + store i64 %t88, ptr %t81 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t92 = load i64, ptr %a1 + %t93 = srem i64 %t92, 64 + %t94 = add i64 128, %t93 + %t95 = trunc i64 %t94 to i8 + %t96 = load i64, ptr %t91 + %t97 = add i64 %t96, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t97, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t98 = load ptr, ptr %a2 + %t99 = getelementptr inbounds i8, ptr %t98, i64 %t96 + store i8 %t95, ptr %t99 + store i64 %t97, ptr %t91 + br label %endif10615 +endif10615: + br label %endif10612 +endif10612: + br label %endif10609 +endif10609: + %t100 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } zeroinitializer, ptr %a101 + store { ptr, i64, i64 } %t100, ptr %a102 + call void @finch_str_from_bytes(ptr %a101, ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a101 + ret { ptr, i64, i64 } %t103 +} + +define internal { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + store ptr %p0, ptr %a1 + store i64 0, ptr %a2 + store i64 0, ptr %a3 + br label %for.cond10616 +for.cond10616: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, 4 + br i1 %t5, label %for.body10617, label %for.end10619 +for.body10617: + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10620, label %ok10621 +panic10620: + call void @finch_panic(ptr @.str.6957, i64 348, ptr @.str.6958) + unreachable +ok10621: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10622, label %ok10623 +panic10622: + call void @finch_panic(ptr @.str.6959, i64 348, ptr @.str.6960) + unreachable +ok10623: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 0 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t9, %t14 + br label %logic.from10624 +logic.from10624: + br i1 %t15, label %logic.end10626, label %logic.rhs10625 +logic.rhs10625: + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic10627, label %ok10628 +panic10627: + call void @finch_panic(ptr @.str.6961, i64 348, ptr @.str.6962) + unreachable +ok10628: + %t18 = getelementptr inbounds %S.json.Reader, ptr %t16, i32 0, i32 0 + %t19 = load ptr, ptr %a1 + %t20 = icmp eq ptr %t19, null + br i1 %t20, label %panic10629, label %ok10630 +panic10629: + call void @finch_panic(ptr @.str.6963, i64 348, ptr @.str.6964) + unreachable +ok10630: + %t21 = getelementptr inbounds %S.json.Reader, ptr %t19, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %t18 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 %t22, %t24 + br i1 %t25, label %range10631, label %inrange10632 +range10631: + call void @finch_panic_index(ptr @.str.6965, i64 348, i64 %t22, i64 %t24) + unreachable +inrange10632: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds i8, ptr %t26, i64 %t22 + %t28 = load i8, ptr %t27 + %t29 = call i64 @finch.json.hex_value(i8 %t28) + %t30 = icmp slt i64 %t29, 0 + br label %logic.rend10633 +logic.rend10633: + br label %logic.end10626 +logic.end10626: + %t31 = phi i1 [ true, %logic.from10624 ], [ %t30, %logic.rend10633 ] + br i1 %t31, label %then10634, label %endif10636 +then10634: + %t32 = load ptr, ptr %a1 + %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.6966, i64 19, i64 0 }) + %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 + ret { i1, i64, { ptr, i64, i64 } } %t34 +endif10636: + %t35 = load i64, ptr %a2 + %t36 = mul i64 %t35, 16 + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic10637, label %ok10638 +panic10637: + call void @finch_panic(ptr @.str.6967, i64 351, ptr @.str.6968) + unreachable +ok10638: + %t39 = getelementptr inbounds %S.json.Reader, ptr %t37, i32 0, i32 0 + %t40 = load ptr, ptr %a1 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic10639, label %ok10640 +panic10639: + call void @finch_panic(ptr @.str.6969, i64 351, ptr @.str.6970) + unreachable +ok10640: + %t42 = getelementptr inbounds %S.json.Reader, ptr %t40, i32 0, i32 1 + %t43 = load i64, ptr %t42 + %t44 = load { ptr, i64, i64 }, ptr %t39 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 %t43, %t45 + br i1 %t46, label %range10641, label %inrange10642 +range10641: + call void @finch_panic_index(ptr @.str.6971, i64 351, i64 %t43, i64 %t45) + unreachable +inrange10642: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 + %t49 = load i8, ptr %t48 + %t50 = call i64 @finch.json.hex_value(i8 %t49) + %t51 = add i64 %t36, %t50 + store i64 %t51, ptr %a2 + %t52 = load ptr, ptr %a1 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic10643, label %ok10644 +panic10643: + call void @finch_panic(ptr @.str.6972, i64 352, ptr @.str.6973) + unreachable +ok10644: + %t54 = getelementptr inbounds %S.json.Reader, ptr %t52, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = add i64 %t55, 1 + store i64 %t56, ptr %t54 + br label %for.step10618 +for.step10618: + %t57 = load i64, ptr %a3 + %t58 = add i64 %t57, 1 + store i64 %t58, ptr %a3 + br label %for.cond10616 +for.end10619: + %t59 = load i64, ptr %a2 + %t60 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t61 = insertvalue { i1, i64, { ptr, i64, i64 } } %t60, i64 %t59, 1 + ret { i1, i64, { ptr, i64, i64 } } %t61 +} + +define internal { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca i64, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca i8, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca i8, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca i64, align 16 + %a212 = alloca i64, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10645, label %ok10646 +panic10645: + call void @finch_panic(ptr @.str.6974, i64 358, ptr @.str.6975) + unreachable +ok10646: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = add i64 %t5, 1 + store i64 %t6, ptr %t4 + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic10647, label %ok10648 +panic10647: + call void @finch_panic(ptr @.str.6976, i64 360, ptr @.str.6977) + unreachable +ok10648: + %t10 = getelementptr inbounds %S.json.Reader, ptr %t8, i32 0, i32 1 + %t11 = load i64, ptr %t10 + store i64 %t11, ptr %a12 + br label %while.cond10649 +while.cond10649: + br label %while.body10650 +while.body10650: + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic10652, label %ok10653 +panic10652: + call void @finch_panic(ptr @.str.6978, i64 362, ptr @.str.6979) + unreachable +ok10653: + %t15 = getelementptr inbounds %S.json.Reader, ptr %t13, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = load ptr, ptr %a1 + %t18 = icmp eq ptr %t17, null + br i1 %t18, label %panic10654, label %ok10655 +panic10654: + call void @finch_panic(ptr @.str.6980, i64 362, ptr @.str.6981) + unreachable +ok10655: + %t19 = getelementptr inbounds %S.json.Reader, ptr %t17, i32 0, i32 0 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 + %t21 = load i64, ptr %t20 + %t22 = icmp sge i64 %t16, %t21 + br i1 %t22, label %then10656, label %endif10658 +then10656: + %t23 = load ptr, ptr %a1 + %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) + store { ptr, i64, i64 } { ptr @.str.6982, i64 30, i64 0 }, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6983, i64 1, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a29 + %t33 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t32, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t33 +endif10658: + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic10659, label %ok10660 +panic10659: + call void @finch_panic(ptr @.str.6984, i64 365, ptr @.str.6985) + unreachable +ok10660: + %t36 = getelementptr inbounds %S.json.Reader, ptr %t34, i32 0, i32 0 + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic10661, label %ok10662 +panic10661: + call void @finch_panic(ptr @.str.6986, i64 365, ptr @.str.6987) + unreachable +ok10662: + %t39 = getelementptr inbounds %S.json.Reader, ptr %t37, i32 0, i32 1 + %t40 = load i64, ptr %t39 + %t41 = load { ptr, i64, i64 }, ptr %t36 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 %t40, %t42 + br i1 %t43, label %range10663, label %inrange10664 +range10663: + call void @finch_panic_index(ptr @.str.6988, i64 365, i64 %t40, i64 %t42) + unreachable +inrange10664: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds i8, ptr %t44, i64 %t40 + %t46 = load i8, ptr %t45 + store i8 %t46, ptr %a47 + %t48 = load i8, ptr %a47 + %t49 = icmp eq i8 %t48, 34 + br i1 %t49, label %then10665, label %endif10667 +then10665: + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t51 = load ptr, ptr %a1 + %t52 = icmp eq ptr %t51, null + br i1 %t52, label %panic10668, label %ok10669 +panic10668: + call void @finch_panic(ptr @.str.6989, i64 367, ptr @.str.6990) + unreachable +ok10669: + %t53 = getelementptr inbounds %S.json.Reader, ptr %t51, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + %t57 = load i64, ptr %a12 + %t58 = load ptr, ptr %a1 + %t59 = icmp eq ptr %t58, null + br i1 %t59, label %panic10670, label %ok10671 +panic10670: + call void @finch_panic(ptr @.str.6992, i64 367, ptr @.str.6993) + unreachable +ok10671: + %t60 = getelementptr inbounds %S.json.Reader, ptr %t58, i32 0, i32 1 + %t61 = load i64, ptr %t60 + call void @finch_str_sub(ptr %a56, ptr %a55, i64 %t57, i64 %t61, ptr @.str.6991, i64 367) + %t62 = load { ptr, i64, i64 }, ptr %a56 + %t63 = load i64, ptr %t50 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %a7 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } %t62, ptr %t66 + store i64 %t64, ptr %t50 + %t67 = load ptr, ptr %a1 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic10672, label %ok10673 +panic10672: + call void @finch_panic(ptr @.str.6994, i64 368, ptr @.str.6995) + unreachable +ok10673: + %t69 = getelementptr inbounds %S.json.Reader, ptr %t67, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = add i64 %t70, 1 + store i64 %t71, ptr %t69 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6996, i64 0, i64 0 }, ptr %a73 + call void @finch_str_join(ptr %a74, ptr %a7, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + %t76 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t77 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t76, { ptr, i64, i64 } %t75, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t77 +endif10667: + %t78 = load i8, ptr %a47 + %t79 = zext i8 %t78 to i64 + %t80 = icmp slt i64 %t79, 32 + br i1 %t80, label %then10674, label %endif10676 +then10674: + %t81 = load ptr, ptr %a1 + %t82 = call { ptr, i64, i64 } @finch.json.where(ptr %t81) + store { ptr, i64, i64 } { ptr @.str.6997, i64 55, i64 0 }, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6998, i64 1, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t90, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t91 +endif10676: + %t92 = load i8, ptr %a47 + %t93 = icmp ne i8 %t92, 92 + br i1 %t93, label %then10677, label %endif10679 +then10677: + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic10680, label %ok10681 +panic10680: + call void @finch_panic(ptr @.str.6999, i64 375, ptr @.str.7000) + unreachable +ok10681: + %t96 = getelementptr inbounds %S.json.Reader, ptr %t94, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = add i64 %t97, 1 + store i64 %t98, ptr %t96 + br label %while.cond10649 +endif10679: + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t100 = load ptr, ptr %a1 + %t101 = icmp eq ptr %t100, null + br i1 %t101, label %panic10682, label %ok10683 +panic10682: + call void @finch_panic(ptr @.str.7001, i64 378, ptr @.str.7002) + unreachable +ok10683: + %t102 = getelementptr inbounds %S.json.Reader, ptr %t100, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + %t106 = load i64, ptr %a12 + %t107 = load ptr, ptr %a1 + %t108 = icmp eq ptr %t107, null + br i1 %t108, label %panic10684, label %ok10685 +panic10684: + call void @finch_panic(ptr @.str.7004, i64 378, ptr @.str.7005) + unreachable +ok10685: + %t109 = getelementptr inbounds %S.json.Reader, ptr %t107, i32 0, i32 1 + %t110 = load i64, ptr %t109 + call void @finch_str_sub(ptr %a105, ptr %a104, i64 %t106, i64 %t110, ptr @.str.7003, i64 378) + %t111 = load { ptr, i64, i64 }, ptr %a105 + %t112 = load i64, ptr %t99 + %t113 = add i64 %t112, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t113, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t114 = load ptr, ptr %a7 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 + store { ptr, i64, i64 } %t111, ptr %t115 + store i64 %t113, ptr %t99 + %t116 = load ptr, ptr %a1 + %t117 = icmp eq ptr %t116, null + br i1 %t117, label %panic10686, label %ok10687 +panic10686: + call void @finch_panic(ptr @.str.7006, i64 379, ptr @.str.7007) + unreachable +ok10687: + %t118 = getelementptr inbounds %S.json.Reader, ptr %t116, i32 0, i32 1 + %t119 = load i64, ptr %t118 + %t120 = add i64 %t119, 1 + store i64 %t120, ptr %t118 + %t121 = load ptr, ptr %a1 + %t122 = call i8 @finch.json.peek(ptr %t121) + store i8 %t122, ptr %a123 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic10688, label %ok10689 +panic10688: + call void @finch_panic(ptr @.str.7008, i64 381, ptr @.str.7009) + unreachable +ok10689: + %t126 = getelementptr inbounds %S.json.Reader, ptr %t124, i32 0, i32 1 + %t127 = load i64, ptr %t126 + %t128 = add i64 %t127, 1 + store i64 %t128, ptr %t126 + %t129 = load i8, ptr %a123 + %t130 = icmp eq i8 %t129, 110 + br i1 %t130, label %then10690, label %else10691 +then10690: + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t132 = load i64, ptr %t131 + %t133 = add i64 %t132, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t133, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t134 = load ptr, ptr %a7 + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 %t132 + store { ptr, i64, i64 } { ptr @.str.7010, i64 1, i64 0 }, ptr %t135 + store i64 %t133, ptr %t131 + br label %endif10692 +else10691: + %t136 = load i8, ptr %a123 + %t137 = icmp eq i8 %t136, 116 + br i1 %t137, label %then10693, label %else10694 +then10693: + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t139 = load i64, ptr %t138 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %a7 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 + store { ptr, i64, i64 } { ptr @.str.7011, i64 1, i64 0 }, ptr %t142 + store i64 %t140, ptr %t138 + br label %endif10695 +else10694: + %t143 = load i8, ptr %a123 + %t144 = icmp eq i8 %t143, 114 + br i1 %t144, label %then10696, label %else10697 +then10696: + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t146 = load i64, ptr %t145 + %t147 = add i64 %t146, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t147, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t148 = load ptr, ptr %a7 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 %t146 + store { ptr, i64, i64 } { ptr @.str.7012, i64 1, i64 0 }, ptr %t149 + store i64 %t147, ptr %t145 + br label %endif10698 +else10697: + %t150 = load i8, ptr %a123 + %t151 = icmp eq i8 %t150, 98 + br i1 %t151, label %then10699, label %else10700 +then10699: + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t153 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) + %t154 = load i64, ptr %t152 + %t155 = add i64 %t154, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t155, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t156 = load ptr, ptr %a7 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i64 %t154 + store { ptr, i64, i64 } %t153, ptr %t157 + store i64 %t155, ptr %t152 + br label %endif10701 +else10700: + %t158 = load i8, ptr %a123 + %t159 = icmp eq i8 %t158, 102 + br i1 %t159, label %then10702, label %else10703 +then10702: + %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t161 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) + %t162 = load i64, ptr %t160 + %t163 = add i64 %t162, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t163, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t164 = load ptr, ptr %a7 + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i64 %t162 + store { ptr, i64, i64 } %t161, ptr %t165 + store i64 %t163, ptr %t160 + br label %endif10704 +else10703: + %t166 = load i8, ptr %a123 + %t167 = icmp eq i8 %t166, 34 + br label %logic.from10705 +logic.from10705: + br i1 %t167, label %logic.end10707, label %logic.rhs10706 +logic.rhs10706: + %t168 = load i8, ptr %a123 + %t169 = icmp eq i8 %t168, 92 + br label %logic.rend10708 +logic.rend10708: + br label %logic.end10707 +logic.end10707: + %t170 = phi i1 [ true, %logic.from10705 ], [ %t169, %logic.rend10708 ] + br label %logic.from10709 +logic.from10709: + br i1 %t170, label %logic.end10711, label %logic.rhs10710 +logic.rhs10710: + %t171 = load i8, ptr %a123 + %t172 = icmp eq i8 %t171, 47 + br label %logic.rend10712 +logic.rend10712: + br label %logic.end10711 +logic.end10711: + %t173 = phi i1 [ true, %logic.from10709 ], [ %t172, %logic.rend10712 ] + br i1 %t173, label %then10713, label %else10714 +then10713: + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t175 = load i8, ptr %a123 + call void @finch_str_from_char(ptr %a176, i8 signext %t175) + %t177 = load { ptr, i64, i64 }, ptr %a176 + %t178 = load i64, ptr %t174 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t179, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %a7 + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i64 %t178 + store { ptr, i64, i64 } %t177, ptr %t181 + store i64 %t179, ptr %t174 + br label %endif10715 +else10714: + %t182 = load i8, ptr %a123 + %t183 = icmp eq i8 %t182, 117 + br i1 %t183, label %then10716, label %else10717 +then10716: + %t184 = load ptr, ptr %a1 + %t185 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t184) + %t186 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 0 + %t187 = xor i1 %t186, true + %t188 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 2 + %t189 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 1 + br i1 %t187, label %try.failed10719, label %try.ok10720 +try.failed10719: + %t190 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t188, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t190 +try.ok10720: + store i64 %t189, ptr %a191 + %t192 = load i64, ptr %a191 + %t193 = icmp sge i64 %t192, 55296 + br label %logic.from10721 +logic.from10721: + br i1 %t193, label %logic.rhs10722, label %logic.end10723 +logic.rhs10722: + %t194 = load i64, ptr %a191 + %t195 = icmp slt i64 %t194, 56320 + br label %logic.rend10724 +logic.rend10724: + br label %logic.end10723 +logic.end10723: + %t196 = phi i1 [ false, %logic.from10721 ], [ %t195, %logic.rend10724 ] + br label %logic.from10725 +logic.from10725: + br i1 %t196, label %logic.rhs10726, label %logic.end10727 +logic.rhs10726: + %t197 = load ptr, ptr %a1 + %t198 = call i1 @finch.json.comes(ptr %t197, { ptr, i64, i64 } { ptr @.str.7013, i64 2, i64 0 }) + br label %logic.rend10728 +logic.rend10728: + br label %logic.end10727 +logic.end10727: + %t199 = phi i1 [ false, %logic.from10725 ], [ %t198, %logic.rend10728 ] + br i1 %t199, label %then10729, label %endif10731 +then10729: + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic10732, label %ok10733 +panic10732: + call void @finch_panic(ptr @.str.7014, i64 398, ptr @.str.7015) + unreachable +ok10733: + %t202 = getelementptr inbounds %S.json.Reader, ptr %t200, i32 0, i32 1 + %t203 = load i64, ptr %t202 + %t204 = add i64 %t203, 2 + store i64 %t204, ptr %t202 + %t205 = load ptr, ptr %a1 + %t206 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t205) + %t207 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 0 + %t208 = xor i1 %t207, true + %t209 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 2 + %t210 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 1 + br i1 %t208, label %try.failed10734, label %try.ok10735 +try.failed10734: + %t211 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t209, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t211 +try.ok10735: + store i64 %t210, ptr %a212 + %t213 = load i64, ptr %a191 + %t214 = sub i64 %t213, 55296 + %t215 = mul i64 %t214, 1024 + %t216 = add i64 65536, %t215 + %t217 = load i64, ptr %a212 + %t218 = sub i64 %t217, 56320 + %t219 = add i64 %t216, %t218 + store i64 %t219, ptr %a191 + br label %endif10731 +endif10731: + %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t221 = load i64, ptr %a191 + %t222 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t221) + %t223 = load i64, ptr %t220 + %t224 = add i64 %t223, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t224, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t225 = load ptr, ptr %a7 + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i64 %t223 + store { ptr, i64, i64 } %t222, ptr %t226 + store i64 %t224, ptr %t220 + br label %endif10718 +else10717: + %t227 = load i8, ptr %a123 + call void @finch_str_from_char(ptr %a228, i8 signext %t227) + %t229 = load { ptr, i64, i64 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.7016, i64 22, i64 0 }, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.7017, i64 12, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + %t238 = load ptr, ptr %a1 + %t239 = call { ptr, i64, i64 } @finch.json.where(ptr %t238) + store { ptr, i64, i64 } %t237, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a240 + store { ptr, i64, i64 } %t243, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.7018, i64 1, i64 0 }, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + %t247 = load { ptr, i64, i64 }, ptr %a244 + %t248 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t247, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t248 +endif10718: + br label %endif10715 +endif10715: + br label %endif10704 +endif10704: + br label %endif10701 +endif10701: + br label %endif10698 +endif10698: + br label %endif10695 +endif10695: + br label %endif10692 +endif10692: + %t249 = load ptr, ptr %a1 + %t250 = icmp eq ptr %t249, null + br i1 %t250, label %panic10736, label %ok10737 +panic10736: + call void @finch_panic(ptr @.str.7019, i64 406, ptr @.str.7020) + unreachable +ok10737: + %t251 = getelementptr inbounds %S.json.Reader, ptr %t249, i32 0, i32 1 + %t252 = load i64, ptr %t251 + store i64 %t252, ptr %a12 + br label %while.cond10649 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a6 = alloca i64, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca double, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca double, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10738, label %ok10739 +panic10738: + call void @finch_panic(ptr @.str.7021, i64 411, ptr @.str.7022) + unreachable +ok10739: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + store i64 %t5, ptr %a6 + %t7 = load ptr, ptr %a1 + %t8 = call i8 @finch.json.peek(ptr %t7) + %t9 = icmp eq i8 %t8, 45 + br i1 %t9, label %then10740, label %endif10742 +then10740: + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10743, label %ok10744 +panic10743: + call void @finch_panic(ptr @.str.7023, i64 413, ptr @.str.7024) + unreachable +ok10744: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + store i64 %t14, ptr %t12 + br label %endif10742 +endif10742: + br label %while.cond10745 +while.cond10745: + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10748, label %ok10749 +panic10748: + call void @finch_panic(ptr @.str.7025, i64 415, ptr @.str.7026) + unreachable +ok10749: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load ptr, ptr %a1 + %t20 = icmp eq ptr %t19, null + br i1 %t20, label %panic10750, label %ok10751 +panic10750: + call void @finch_panic(ptr @.str.7027, i64 415, ptr @.str.7028) + unreachable +ok10751: + %t21 = getelementptr inbounds %S.json.Reader, ptr %t19, i32 0, i32 0 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp slt i64 %t18, %t23 + br label %logic.from10752 +logic.from10752: + br i1 %t24, label %logic.rhs10753, label %logic.end10754 +logic.rhs10753: + %t25 = load ptr, ptr %a1 + %t26 = icmp eq ptr %t25, null + br i1 %t26, label %panic10755, label %ok10756 +panic10755: + call void @finch_panic(ptr @.str.7029, i64 415, ptr @.str.7030) + unreachable +ok10756: + %t27 = getelementptr inbounds %S.json.Reader, ptr %t25, i32 0, i32 0 + %t28 = load ptr, ptr %a1 + %t29 = icmp eq ptr %t28, null + br i1 %t29, label %panic10757, label %ok10758 +panic10757: + call void @finch_panic(ptr @.str.7031, i64 415, ptr @.str.7032) + unreachable +ok10758: + %t30 = getelementptr inbounds %S.json.Reader, ptr %t28, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = load { ptr, i64, i64 }, ptr %t27 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range10759, label %inrange10760 +range10759: + call void @finch_panic_index(ptr @.str.7033, i64 415, i64 %t31, i64 %t33) + unreachable +inrange10760: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds i8, ptr %t35, i64 %t31 + %t37 = load i8, ptr %t36 + %t38 = icmp uge i8 %t37, 48 + br label %logic.from10761 +logic.from10761: + br i1 %t38, label %logic.rhs10762, label %logic.end10763 +logic.rhs10762: + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic10764, label %ok10765 +panic10764: + call void @finch_panic(ptr @.str.7034, i64 415, ptr @.str.7035) + unreachable +ok10765: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 0 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic10766, label %ok10767 +panic10766: + call void @finch_panic(ptr @.str.7036, i64 415, ptr @.str.7037) + unreachable +ok10767: + %t44 = getelementptr inbounds %S.json.Reader, ptr %t42, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = load { ptr, i64, i64 }, ptr %t41 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 %t45, %t47 + br i1 %t48, label %range10768, label %inrange10769 +range10768: + call void @finch_panic_index(ptr @.str.7038, i64 415, i64 %t45, i64 %t47) + unreachable +inrange10769: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds i8, ptr %t49, i64 %t45 + %t51 = load i8, ptr %t50 + %t52 = icmp ule i8 %t51, 57 + br label %logic.rend10770 +logic.rend10770: + br label %logic.end10763 +logic.end10763: + %t53 = phi i1 [ false, %logic.from10761 ], [ %t52, %logic.rend10770 ] + br label %logic.from10771 +logic.from10771: + br i1 %t53, label %logic.end10773, label %logic.rhs10772 +logic.rhs10772: + %t54 = load ptr, ptr %a1 + %t55 = icmp eq ptr %t54, null + br i1 %t55, label %panic10774, label %ok10775 +panic10774: + call void @finch_panic(ptr @.str.7039, i64 415, ptr @.str.7040) + unreachable +ok10775: + %t56 = getelementptr inbounds %S.json.Reader, ptr %t54, i32 0, i32 0 + %t57 = load ptr, ptr %a1 + %t58 = icmp eq ptr %t57, null + br i1 %t58, label %panic10776, label %ok10777 +panic10776: + call void @finch_panic(ptr @.str.7041, i64 415, ptr @.str.7042) + unreachable +ok10777: + %t59 = getelementptr inbounds %S.json.Reader, ptr %t57, i32 0, i32 1 + %t60 = load i64, ptr %t59 + %t61 = load { ptr, i64, i64 }, ptr %t56 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 %t60, %t62 + br i1 %t63, label %range10778, label %inrange10779 +range10778: + call void @finch_panic_index(ptr @.str.7043, i64 415, i64 %t60, i64 %t62) + unreachable +inrange10779: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 + %t66 = load i8, ptr %t65 + %t67 = icmp eq i8 %t66, 46 + br label %logic.rend10780 +logic.rend10780: + br label %logic.end10773 +logic.end10773: + %t68 = phi i1 [ true, %logic.from10771 ], [ %t67, %logic.rend10780 ] + br label %logic.from10781 +logic.from10781: + br i1 %t68, label %logic.end10783, label %logic.rhs10782 +logic.rhs10782: + %t69 = load ptr, ptr %a1 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic10784, label %ok10785 +panic10784: + call void @finch_panic(ptr @.str.7044, i64 415, ptr @.str.7045) + unreachable +ok10785: + %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 0 + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic10786, label %ok10787 +panic10786: + call void @finch_panic(ptr @.str.7046, i64 415, ptr @.str.7047) + unreachable +ok10787: + %t74 = getelementptr inbounds %S.json.Reader, ptr %t72, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = load { ptr, i64, i64 }, ptr %t71 + %t77 = extractvalue { ptr, i64, i64 } %t76, 1 + %t78 = icmp uge i64 %t75, %t77 + br i1 %t78, label %range10788, label %inrange10789 +range10788: + call void @finch_panic_index(ptr @.str.7048, i64 415, i64 %t75, i64 %t77) + unreachable +inrange10789: + %t79 = extractvalue { ptr, i64, i64 } %t76, 0 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 + %t81 = load i8, ptr %t80 + %t82 = icmp eq i8 %t81, 101 + br label %logic.rend10790 +logic.rend10790: + br label %logic.end10783 +logic.end10783: + %t83 = phi i1 [ true, %logic.from10781 ], [ %t82, %logic.rend10790 ] + br label %logic.from10791 +logic.from10791: + br i1 %t83, label %logic.end10793, label %logic.rhs10792 +logic.rhs10792: + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic10794, label %ok10795 +panic10794: + call void @finch_panic(ptr @.str.7049, i64 415, ptr @.str.7050) + unreachable +ok10795: + %t86 = getelementptr inbounds %S.json.Reader, ptr %t84, i32 0, i32 0 + %t87 = load ptr, ptr %a1 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic10796, label %ok10797 +panic10796: + call void @finch_panic(ptr @.str.7051, i64 415, ptr @.str.7052) + unreachable +ok10797: + %t89 = getelementptr inbounds %S.json.Reader, ptr %t87, i32 0, i32 1 + %t90 = load i64, ptr %t89 + %t91 = load { ptr, i64, i64 }, ptr %t86 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range10798, label %inrange10799 +range10798: + call void @finch_panic_index(ptr @.str.7053, i64 415, i64 %t90, i64 %t92) + unreachable +inrange10799: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds i8, ptr %t94, i64 %t90 + %t96 = load i8, ptr %t95 + %t97 = icmp eq i8 %t96, 69 + br label %logic.rend10800 +logic.rend10800: + br label %logic.end10793 +logic.end10793: + %t98 = phi i1 [ true, %logic.from10791 ], [ %t97, %logic.rend10800 ] + br label %logic.from10801 +logic.from10801: + br i1 %t98, label %logic.end10803, label %logic.rhs10802 +logic.rhs10802: + %t99 = load ptr, ptr %a1 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic10804, label %ok10805 +panic10804: + call void @finch_panic(ptr @.str.7054, i64 415, ptr @.str.7055) + unreachable +ok10805: + %t101 = getelementptr inbounds %S.json.Reader, ptr %t99, i32 0, i32 0 + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic10806, label %ok10807 +panic10806: + call void @finch_panic(ptr @.str.7056, i64 415, ptr @.str.7057) + unreachable +ok10807: + %t104 = getelementptr inbounds %S.json.Reader, ptr %t102, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = load { ptr, i64, i64 }, ptr %t101 + %t107 = extractvalue { ptr, i64, i64 } %t106, 1 + %t108 = icmp uge i64 %t105, %t107 + br i1 %t108, label %range10808, label %inrange10809 +range10808: + call void @finch_panic_index(ptr @.str.7058, i64 415, i64 %t105, i64 %t107) + unreachable +inrange10809: + %t109 = extractvalue { ptr, i64, i64 } %t106, 0 + %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 + %t111 = load i8, ptr %t110 + %t112 = icmp eq i8 %t111, 43 + br label %logic.rend10810 +logic.rend10810: + br label %logic.end10803 +logic.end10803: + %t113 = phi i1 [ true, %logic.from10801 ], [ %t112, %logic.rend10810 ] + br label %logic.from10811 +logic.from10811: + br i1 %t113, label %logic.end10813, label %logic.rhs10812 +logic.rhs10812: + %t114 = load ptr, ptr %a1 + %t115 = icmp eq ptr %t114, null + br i1 %t115, label %panic10814, label %ok10815 +panic10814: + call void @finch_panic(ptr @.str.7059, i64 415, ptr @.str.7060) + unreachable +ok10815: + %t116 = getelementptr inbounds %S.json.Reader, ptr %t114, i32 0, i32 0 + %t117 = load ptr, ptr %a1 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic10816, label %ok10817 +panic10816: + call void @finch_panic(ptr @.str.7061, i64 415, ptr @.str.7062) + unreachable +ok10817: + %t119 = getelementptr inbounds %S.json.Reader, ptr %t117, i32 0, i32 1 + %t120 = load i64, ptr %t119 + %t121 = load { ptr, i64, i64 }, ptr %t116 + %t122 = extractvalue { ptr, i64, i64 } %t121, 1 + %t123 = icmp uge i64 %t120, %t122 + br i1 %t123, label %range10818, label %inrange10819 +range10818: + call void @finch_panic_index(ptr @.str.7063, i64 415, i64 %t120, i64 %t122) + unreachable +inrange10819: + %t124 = extractvalue { ptr, i64, i64 } %t121, 0 + %t125 = getelementptr inbounds i8, ptr %t124, i64 %t120 + %t126 = load i8, ptr %t125 + %t127 = icmp eq i8 %t126, 45 + br label %logic.rend10820 +logic.rend10820: + br label %logic.end10813 +logic.end10813: + %t128 = phi i1 [ true, %logic.from10811 ], [ %t127, %logic.rend10820 ] + br label %logic.rend10821 +logic.rend10821: + br label %logic.end10754 +logic.end10754: + %t129 = phi i1 [ false, %logic.from10752 ], [ %t128, %logic.rend10821 ] + br i1 %t129, label %while.body10746, label %while.end10747 +while.body10746: + %t130 = load ptr, ptr %a1 + %t131 = icmp eq ptr %t130, null + br i1 %t131, label %panic10822, label %ok10823 +panic10822: + call void @finch_panic(ptr @.str.7064, i64 416, ptr @.str.7065) + unreachable +ok10823: + %t132 = getelementptr inbounds %S.json.Reader, ptr %t130, i32 0, i32 1 + %t133 = load i64, ptr %t132 + %t134 = add i64 %t133, 1 + store i64 %t134, ptr %t132 + br label %while.cond10745 +while.end10747: + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic10824, label %ok10825 +panic10824: + call void @finch_panic(ptr @.str.7066, i64 418, ptr @.str.7067) + unreachable +ok10825: + %t137 = getelementptr inbounds %S.json.Reader, ptr %t135, i32 0, i32 0 + %t138 = load { ptr, i64, i64 }, ptr %t137 + store { ptr, i64, i64 } %t138, ptr %a139 + %t141 = load i64, ptr %a6 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic10826, label %ok10827 +panic10826: + call void @finch_panic(ptr @.str.7069, i64 418, ptr @.str.7070) + unreachable +ok10827: + %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 + %t145 = load i64, ptr %t144 + call void @finch_str_sub(ptr %a140, ptr %a139, i64 %t141, i64 %t145, ptr @.str.7068, i64 418) + %t146 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } zeroinitializer, ptr %a147 + store double 0.0, ptr %a148 + store { ptr, i64, i64 } %t146, ptr %a149 + %t150 = call i32 @finch_str_try_float(ptr %a149, ptr %a148, ptr %a147) + %t151 = icmp eq i32 %t150, 0 + %t152 = load { ptr, i64, i64 }, ptr %a147 + %t153 = load double, ptr %a148 + br i1 %t151, label %or.failed10828, label %or.ok10829 +or.failed10828: + store { ptr, i64, i64 } %t152, ptr %a154 + %t155 = load i64, ptr %a6 + %t156 = load ptr, ptr %a1 + %t157 = icmp eq ptr %t156, null + br i1 %t157, label %panic10830, label %ok10831 +panic10830: + call void @finch_panic(ptr @.str.7071, i64 419, ptr @.str.7072) + unreachable +ok10831: + %t158 = getelementptr inbounds %S.json.Reader, ptr %t156, i32 0, i32 1 + store i64 %t155, ptr %t158 + %t159 = load ptr, ptr %a1 + %t160 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t159, { ptr, i64, i64 } { ptr @.str.7073, i64 8, i64 0 }) + %t161 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t160, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t161 +or.ok10829: + store double %t153, ptr %a162 + %t163 = load double, ptr %a162 + %t164 = call %S.json.Json @finch.json.new_number(double %t163) + %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a5 = alloca i8, align 16 + %a22 = alloca %S.json.Json, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca %S.json.Json, align 16 + %a103 = alloca %S.json.Json, align 16 + %a128 = alloca %S.json.Json, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t2) + %t3 = load ptr, ptr %a1 + %t4 = call i8 @finch.json.peek(ptr %t3) + store i8 %t4, ptr %a5 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10832, label %ok10833 +panic10832: + call void @finch_panic(ptr @.str.7074, i64 428, ptr @.str.7075) + unreachable +ok10833: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10834, label %ok10835 +panic10834: + call void @finch_panic(ptr @.str.7076, i64 428, ptr @.str.7077) + unreachable +ok10835: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 0 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t9, %t14 + br i1 %t15, label %then10836, label %endif10838 +then10836: + %t16 = load ptr, ptr %a1 + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7078, i64 7, i64 0 }) + %t18 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t17, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t18 +endif10838: + %t19 = load i8, ptr %a5 + %t20 = icmp eq i8 %t19, 123 + br i1 %t20, label %then10839, label %endif10841 +then10839: + %t21 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t21, ptr %a22 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic10842, label %ok10843 +panic10842: + call void @finch_panic(ptr @.str.7079, i64 433, ptr @.str.7080) + unreachable +ok10843: + %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = add i64 %t26, 1 + store i64 %t27, ptr %t25 + %t28 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t28) + %t29 = load ptr, ptr %a1 + %t30 = call i8 @finch.json.peek(ptr %t29) + %t31 = icmp eq i8 %t30, 125 + br i1 %t31, label %then10844, label %endif10846 +then10844: + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10847, label %ok10848 +panic10847: + call void @finch_panic(ptr @.str.7081, i64 436, ptr @.str.7082) + unreachable +ok10848: + %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 1 + %t35 = load i64, ptr %t34 + %t36 = add i64 %t35, 1 + store i64 %t36, ptr %t34 + %t37 = load %S.json.Json, ptr %a22 + %t38 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t39 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t38, %S.json.Json %t37, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t39 +endif10846: + br label %while.cond10849 +while.cond10849: + br label %while.body10850 +while.body10850: + %t40 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t40) + %t41 = load ptr, ptr %a1 + %t42 = call i8 @finch.json.peek(ptr %t41) + %t43 = icmp ne i8 %t42, 34 + br i1 %t43, label %then10852, label %endif10854 +then10852: + %t44 = load ptr, ptr %a1 + %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7083, i64 15, i64 0 }) + %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 +endif10854: + %t47 = load ptr, ptr %a1 + %t48 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %t47) + %t49 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 0 + %t50 = xor i1 %t49, true + %t51 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 2 + %t52 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 1 + br i1 %t50, label %try.failed10855, label %try.ok10856 +try.failed10855: + %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 +try.ok10856: + store { ptr, i64, i64 } %t52, ptr %a54 + %t55 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t55) + %t56 = load ptr, ptr %a1 + %t57 = call i8 @finch.json.peek(ptr %t56) + %t58 = icmp ne i8 %t57, 58 + br i1 %t58, label %then10857, label %endif10859 +then10857: + %t59 = load ptr, ptr %a1 + %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7084, i64 3, i64 0 }) + %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 +endif10859: + %t62 = load ptr, ptr %a1 + %t63 = icmp eq ptr %t62, null + br i1 %t63, label %panic10860, label %ok10861 +panic10860: + call void @finch_panic(ptr @.str.7085, i64 449, ptr @.str.7086) + unreachable +ok10861: + %t64 = getelementptr inbounds %S.json.Reader, ptr %t62, i32 0, i32 1 + %t65 = load i64, ptr %t64 + %t66 = add i64 %t65, 1 + store i64 %t66, ptr %t64 + %t67 = load ptr, ptr %a1 + %t68 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %t67) + %t69 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 0 + %t70 = xor i1 %t69, true + %t71 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 2 + %t72 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 1 + br i1 %t70, label %try.failed10862, label %try.ok10863 +try.failed10862: + %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 +try.ok10863: + store %S.json.Json %t72, ptr %a74 + %t75 = load { ptr, i64, i64 }, ptr %a54 + %t76 = load %S.json.Json, ptr %a74 + call void @finch.json.Json.set(ptr %a22, { ptr, i64, i64 } %t75, %S.json.Json %t76) + %t77 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t77) + %t78 = load ptr, ptr %a1 + %t79 = call i8 @finch.json.peek(ptr %t78) + %t80 = icmp eq i8 %t79, 44 + br i1 %t80, label %then10864, label %endif10866 +then10864: + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic10867, label %ok10868 +panic10867: + call void @finch_panic(ptr @.str.7087, i64 454, ptr @.str.7088) + unreachable +ok10868: + %t83 = getelementptr inbounds %S.json.Reader, ptr %t81, i32 0, i32 1 + %t84 = load i64, ptr %t83 + %t85 = add i64 %t84, 1 + store i64 %t85, ptr %t83 + br label %while.cond10849 +endif10866: + %t86 = load ptr, ptr %a1 + %t87 = call i8 @finch.json.peek(ptr %t86) + %t88 = icmp eq i8 %t87, 125 + br i1 %t88, label %then10869, label %endif10871 +then10869: + %t89 = load ptr, ptr %a1 + %t90 = icmp eq ptr %t89, null + br i1 %t90, label %panic10872, label %ok10873 +panic10872: + call void @finch_panic(ptr @.str.7089, i64 458, ptr @.str.7090) + unreachable +ok10873: + %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 + %t92 = load i64, ptr %t91 + %t93 = add i64 %t92, 1 + store i64 %t93, ptr %t91 + %t94 = load %S.json.Json, ptr %a22 + %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 +endif10871: + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7091, i64 10, i64 0 }) + %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 +endif10841: + %t100 = load i8, ptr %a5 + %t101 = icmp eq i8 %t100, 91 + br i1 %t101, label %then10874, label %endif10876 +then10874: + %t102 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t102, ptr %a103 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic10877, label %ok10878 +panic10877: + call void @finch_panic(ptr @.str.7092, i64 466, ptr @.str.7093) + unreachable +ok10878: + %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = add i64 %t107, 1 + store i64 %t108, ptr %t106 + %t109 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t109) + %t110 = load ptr, ptr %a1 + %t111 = call i8 @finch.json.peek(ptr %t110) + %t112 = icmp eq i8 %t111, 93 + br i1 %t112, label %then10879, label %endif10881 +then10879: + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic10882, label %ok10883 +panic10882: + call void @finch_panic(ptr @.str.7094, i64 469, ptr @.str.7095) + unreachable +ok10883: + %t115 = getelementptr inbounds %S.json.Reader, ptr %t113, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = add i64 %t116, 1 + store i64 %t117, ptr %t115 + %t118 = load %S.json.Json, ptr %a103 + %t119 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t120 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t119, %S.json.Json %t118, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t120 +endif10881: + br label %while.cond10884 +while.cond10884: + br label %while.body10885 +while.body10885: + %t121 = load ptr, ptr %a1 + %t122 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %t121) + %t123 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 0 + %t124 = xor i1 %t123, true + %t125 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 2 + %t126 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 1 + br i1 %t124, label %try.failed10887, label %try.ok10888 +try.failed10887: + %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 +try.ok10888: + store %S.json.Json %t126, ptr %a128 + %t129 = load %S.json.Json, ptr %a128 + call void @finch.json.Json.push(ptr %a103, %S.json.Json %t129) + %t130 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t130) + %t131 = load ptr, ptr %a1 + %t132 = call i8 @finch.json.peek(ptr %t131) + %t133 = icmp eq i8 %t132, 44 + br i1 %t133, label %then10889, label %endif10891 +then10889: + %t134 = load ptr, ptr %a1 + %t135 = icmp eq ptr %t134, null + br i1 %t135, label %panic10892, label %ok10893 +panic10892: + call void @finch_panic(ptr @.str.7096, i64 477, ptr @.str.7097) + unreachable +ok10893: + %t136 = getelementptr inbounds %S.json.Reader, ptr %t134, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = add i64 %t137, 1 + store i64 %t138, ptr %t136 + br label %while.cond10884 +endif10891: + %t139 = load ptr, ptr %a1 + %t140 = call i8 @finch.json.peek(ptr %t139) + %t141 = icmp eq i8 %t140, 93 + br i1 %t141, label %then10894, label %endif10896 +then10894: + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic10897, label %ok10898 +panic10897: + call void @finch_panic(ptr @.str.7098, i64 481, ptr @.str.7099) + unreachable +ok10898: + %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = add i64 %t145, 1 + store i64 %t146, ptr %t144 + %t147 = load %S.json.Json, ptr %a103 + %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 +endif10896: + %t150 = load ptr, ptr %a1 + %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7100, i64 10, i64 0 }) + %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 +endif10876: + %t153 = load i8, ptr %a5 + %t154 = icmp eq i8 %t153, 34 + br i1 %t154, label %then10899, label %endif10901 +then10899: + %t155 = load ptr, ptr %a1 + %t156 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %t155) + %t157 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 0 + %t158 = xor i1 %t157, true + %t159 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 2 + %t160 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 1 + br i1 %t158, label %try.failed10902, label %try.ok10903 +try.failed10902: + %t161 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t159, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t161 +try.ok10903: + store { ptr, i64, i64 } %t160, ptr %a162 + %t163 = load { ptr, i64, i64 }, ptr %a162 + %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) + %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 +endif10901: + %t167 = load i8, ptr %a5 + %t168 = icmp eq i8 %t167, 116 + br i1 %t168, label %then10904, label %endif10906 +then10904: + %t169 = load ptr, ptr %a1 + %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7101, i64 4, i64 0 }) + %t171 = extractvalue { i1, i8, { ptr, i64, i64 } } %t170, 0 + %t172 = xor i1 %t171, true + %t173 = extractvalue { i1, i8, { ptr, i64, i64 } } %t170, 2 + br i1 %t172, label %try.failed10907, label %try.ok10908 +try.failed10907: + %t174 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t173, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t174 +try.ok10908: + %t175 = call %S.json.Json @finch.json.new_bool(i1 true) + %t176 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t177 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t176, %S.json.Json %t175, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t177 +endif10906: + %t178 = load i8, ptr %a5 + %t179 = icmp eq i8 %t178, 102 + br i1 %t179, label %then10909, label %endif10911 +then10909: + %t180 = load ptr, ptr %a1 + %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7102, i64 5, i64 0 }) + %t182 = extractvalue { i1, i8, { ptr, i64, i64 } } %t181, 0 + %t183 = xor i1 %t182, true + %t184 = extractvalue { i1, i8, { ptr, i64, i64 } } %t181, 2 + br i1 %t183, label %try.failed10912, label %try.ok10913 +try.failed10912: + %t185 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t184, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t185 +try.ok10913: + %t186 = call %S.json.Json @finch.json.new_bool(i1 false) + %t187 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t188 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t187, %S.json.Json %t186, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t188 +endif10911: + %t189 = load i8, ptr %a5 + %t190 = icmp eq i8 %t189, 110 + br i1 %t190, label %then10914, label %endif10916 +then10914: + %t191 = load ptr, ptr %a1 + %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7103, i64 4, i64 0 }) + %t193 = extractvalue { i1, i8, { ptr, i64, i64 } } %t192, 0 + %t194 = xor i1 %t193, true + %t195 = extractvalue { i1, i8, { ptr, i64, i64 } } %t192, 2 + br i1 %t194, label %try.failed10917, label %try.ok10918 +try.failed10917: + %t196 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t195, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t196 +try.ok10918: + %t197 = call %S.json.Json @finch.json.new_null() + %t198 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t199 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t198, %S.json.Json %t197, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t199 +endif10916: + %t200 = load i8, ptr %a5 + %t201 = icmp eq i8 %t200, 45 + br label %logic.from10919 +logic.from10919: + br i1 %t201, label %logic.end10921, label %logic.rhs10920 +logic.rhs10920: + %t202 = load i8, ptr %a5 + %t203 = icmp uge i8 %t202, 48 + br label %logic.from10922 +logic.from10922: + br i1 %t203, label %logic.rhs10923, label %logic.end10924 +logic.rhs10923: + %t204 = load i8, ptr %a5 + %t205 = icmp ule i8 %t204, 57 + br label %logic.rend10925 +logic.rend10925: + br label %logic.end10924 +logic.end10924: + %t206 = phi i1 [ false, %logic.from10922 ], [ %t205, %logic.rend10925 ] + br label %logic.rend10926 +logic.rend10926: + br label %logic.end10921 +logic.end10921: + %t207 = phi i1 [ true, %logic.from10919 ], [ %t206, %logic.rend10926 ] + br i1 %t207, label %then10927, label %endif10929 +then10927: + %t208 = load ptr, ptr %a1 + %t209 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %t208) + %t210 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 0 + %t211 = xor i1 %t210, true + %t212 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 2 + %t213 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 1 + br i1 %t211, label %try.failed10930, label %try.ok10931 +try.failed10930: + %t214 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t212, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t214 +try.ok10931: + %t215 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t216 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t215, %S.json.Json %t213, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t216 +endif10929: + %t217 = load ptr, ptr %a1 + %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7104, i64 7, i64 0 }) + %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.json.Reader, align 16 + %a14 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + %a25 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.json.Reader zeroinitializer, { ptr, i64, i64 } %t5, 0 + store %S.json.Reader %t6, ptr %a7 + %t8 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %a7) + %t9 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 0 + %t10 = xor i1 %t9, true + %t11 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 2 + %t12 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 1 + br i1 %t10, label %try.failed10932, label %try.ok10933 +try.failed10932: + %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 +try.ok10933: + store %S.json.Json %t12, ptr %a14 + call void @finch.json.skip_space(ptr %a7) + %t15 = getelementptr inbounds %S.json.Reader, ptr %a7, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = getelementptr inbounds %S.json.Reader, ptr %a7, i32 0, i32 0 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load i64, ptr %t18 + %t20 = icmp slt i64 %t16, %t19 + br i1 %t20, label %then10934, label %endif10936 +then10934: + %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7105, i64 19, i64 0 }) + %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 +endif10936: + %t23 = load %S.json.Json, ptr %a14 + store %S.json.Json %t23, ptr %a24 + call void @finch.copy.S_json_Json(ptr %a25, ptr %a24) + %t26 = load %S.json.Json, ptr %a25 + %t27 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t28 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t27, %S.json.Json %t26, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t28 +} + +define i32 @main(i32 %argc, ptr %argv) { +entry: + %args = alloca { ptr, i64, i64 } + call void @finch_args(ptr %args, i32 %argc, ptr %argv) + %a = load { ptr, i64, i64 }, ptr %args + %r = call i64 @finch.main.main({ ptr, i64, i64 } %a) + %code = trunc i64 %r to i32 + ret i32 %code +} + diff --git a/bootstrap/linux-x86_64.ll b/bootstrap/linux-x86_64.ll index 18d30e5..6c23a9c 100644 --- a/bootstrap/linux-x86_64.ll +++ b/bootstrap/linux-x86_64.ll @@ -305,2317 +305,2317 @@ @.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" +@.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.208 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.209 = private unnamed_addr constant [2 x i8] c":\00" -@.str.210 = private unnamed_addr constant [1 x i8] c"\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.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.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.214 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.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".o\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".a\00" -@.str.221 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.222 = private unnamed_addr constant [1 x i8] c"\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.225 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.226 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.227 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.228 = private unnamed_addr constant [1 x i8] c"\00" -@.str.229 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.230 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.231 = private unnamed_addr constant [1 x i8] c"\00" -@.str.232 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.233 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.234 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.237 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" +@.str.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 [20 x i8] c"/runtime/finch_rt.c\00" -@.str.240 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.241 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.242 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00" -@.str.243 = private unnamed_addr constant [1 x i8] c"\00" -@.str.244 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.245 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.248 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.249 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.250 = private unnamed_addr constant [2 x i8] c" \00" -@.str.251 = private unnamed_addr constant [2 x i8] c" \00" -@.str.252 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.253 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.254 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.255 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.256 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.257 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.258 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.259 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.260 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.261 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.263 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.264 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.265 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.266 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.267 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.268 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.269 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.270 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.273 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.274 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.275 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.276 = private unnamed_addr constant [2 x i8] c":\00" -@.str.277 = private unnamed_addr constant [2 x i8] c":\00" -@.str.278 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.279 = private unnamed_addr constant [1 x i8] c"\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.281 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.282 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.283 = private unnamed_addr constant [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.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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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.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 [29 x i8] c"used .line 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.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.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 [28 x i8] c"used .src on a null pointer\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 [14 x i8] c"src/lexer.fch\00" -@.str.330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.334 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.335 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.336 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.339 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.340 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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.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.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.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.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 [1 x i8] c"\00" +@.str.342 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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 [26 x i8] c"used .i 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.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.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.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 [26 x i8] c"used .i 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.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 [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.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.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.362 = private unnamed_addr constant [26 x i8] c"used .i 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 [26 x i8] c"used .i on a null pointer\00" +@.str.364 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.365 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.366 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.367 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.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.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 [29 x i8] c"used .line 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 [28 x i8] c"used .col 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.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 [26 x i8] c"used .i on a null pointer\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 [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.384 = private unnamed_addr constant [1 x i8] c"\00" -@.str.385 = private unnamed_addr constant [1 x i8] c"\00" -@.str.386 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.387 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.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.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.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.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.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 [27 x i8] c"used .nl on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [28 x i8] c"used .src on a null pointer\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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [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.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.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.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.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 [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.419 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.420 = private unnamed_addr constant [4 x i8] c"int\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.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 [26 x i8] c"used .i on a null pointer\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 [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.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.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.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.436 = private unnamed_addr constant [26 x i8] c"used .i 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.438 = private unnamed_addr constant [28 x i8] c"used .src 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.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.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.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.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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\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.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.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.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.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.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.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.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 [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.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 [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.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 [4 x i8] c"map\00" -@.str.512 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.513 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.514 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.517 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.518 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.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.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.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 [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.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.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.550 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.551 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.552 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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.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 [26 x i8] c"used .i 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.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 [26 x i8] c"used .i on a null pointer\00" +@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.571 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\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 [15 x i8] c"src/parser.fch\00" -@.str.592 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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.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.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 [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.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 [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.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 [29 x i8] c"used .toks on a null pointer\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 [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.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.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.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.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 [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.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.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.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.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.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 [29 x i8] c"used .toks 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.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 [29 x i8] c"used .toks on a null pointer\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 [2 x i8] c"[\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.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.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.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 [2 x i8] c"[\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.700 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.701 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.708 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.709 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.710 = private unnamed_addr constant [2 x i8] c".\00" -@.str.711 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.712 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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 [2 x i8] c"}\00" -@.str.719 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.720 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.721 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.722 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.723 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.724 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.725 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.726 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.727 = private unnamed_addr constant [2 x i8] c":\00" -@.str.728 = private unnamed_addr constant [2 x i8] c":\00" -@.str.729 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.730 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.731 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.733 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.736 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.737 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.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".a\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 [4 x i8] c"lib\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 [4 x i8] c".so\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 [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.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 [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.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 [27 x i8] c"'fn', 'struct' or 'import'\00" +@.str.823 = private unnamed_addr constant [7 x i8] c"export\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.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 [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.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 [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.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 [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.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.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 [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.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"||\00" -@.str.929 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.930 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.931 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.932 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.933 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.934 = private unnamed_addr constant [2 x i8] c">\00" -@.str.935 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.936 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.937 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.938 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.939 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.940 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.941 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.942 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.943 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.944 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.945 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.946 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.949 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.950 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.951 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.952 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.953 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.954 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.955 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.956 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.957 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.958 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.959 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.960 = private unnamed_addr constant [2 x i8] c")\00" -@.str.961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.962 = private unnamed_addr constant [1 x i8] c"\00" -@.str.963 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.964 = private unnamed_addr constant [2 x i8] c":\00" -@.str.965 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.966 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.967 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.968 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.969 = private unnamed_addr constant [2 x i8] c",\00" -@.str.970 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.971 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.972 = private unnamed_addr constant [2 x i8] c")\00" -@.str.973 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.974 = private unnamed_addr constant [2 x i8] c".\00" -@.str.975 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.976 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.977 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.978 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.979 = private unnamed_addr constant [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.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.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.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 [4 x i8] c"map\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 [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1020 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1021 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1022 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1023 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1024 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1025 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1026 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1027 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1028 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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 [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.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.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.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.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.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 [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.1067 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1068 = private unnamed_addr constant [2 x i8] c"\09\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 [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.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.1090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1091 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1094 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1095 = private unnamed_addr constant [4 x i8] c"@I\09\00" +@.str.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.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.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 [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.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.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.1105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1106 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1107 = private unnamed_addr constant [4 x i8] c"@F\09\00" -@.str.1108 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1109 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1110 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1112 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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 [2 x i8] c"\09\00" -@.str.1116 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1117 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.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.1118 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1119 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1121 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.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 [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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1128 = private unnamed_addr constant [4 x i8] c"@F\09\00" -@.str.1129 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1130 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1131 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1133 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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 [2 x i8] c"\09\00" -@.str.1137 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1139 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1140 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1141 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1142 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1145 = private unnamed_addr constant [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.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.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.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 [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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1152 = private unnamed_addr constant [4 x i8] c"@S\09\00" -@.str.1153 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1154 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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.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.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.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.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 [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.1173 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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.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.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.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.1187 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1188 = private unnamed_addr constant [2 x i8] c"\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.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.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 [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.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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.1207 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1208 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1209 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1211 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.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.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.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 [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.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 .lbl on a null pointer\00" +@.str.1229 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" @.str.1230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1231 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1234 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1236 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1237 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1239 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1240 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1241 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1242 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1244 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1246 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1247 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1249 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1253 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1254 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1255 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1256 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1257 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1259 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1260 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1261 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1262 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1263 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1264 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1265 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1266 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1267 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1268 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1269 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1270 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1273 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1274 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1275 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1276 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1277 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1278 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1279 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1282 = private unnamed_addr constant [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.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.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.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.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.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.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.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 [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.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.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.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 [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.1294 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1296 = private unnamed_addr constant [30 x i8] c"used .enums 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.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 [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.1302 = private unnamed_addr constant [30 x i8] c"used .progs 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 .progs 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 [31 x i8] c"used .module 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 [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.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.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 [30 x i8] c"used .targs on a null pointer\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 [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.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.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 [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.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.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.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.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 [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.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.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 [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.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.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.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.1432 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1433 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1434 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1435 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1439 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1440 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.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 [29 x i8] c"used .nstr on a null pointer\00" -@.str.1443 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1445 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.1446 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1447 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1448 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1449 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1450 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1451 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1452 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1454 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1455 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1457 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1459 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1460 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1461 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1462 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1465 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1466 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1467 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1468 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1469 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1471 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1473 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1474 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1475 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1476 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1477 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1480 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1482 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.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.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 [32 x i8] c"used .allocas on a null pointer\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 [28 x i8] c"used .tmp on a null pointer\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 [29 x i8] c"used .term on a null pointer\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 [33 x i8] c"used .dbgScope on a null pointer\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 [33 x i8] c"used .dbgScope on a null pointer\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 [29 x i8] c"used .body on a null pointer\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 [32 x i8] c"used .allocas on a null pointer\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 [28 x i8] c"used .tmp on a null pointer\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 [29 x i8] c"used .term on a null pointer\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 .out on a null pointer\00" -@.str.1503 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1505 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1506 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1507 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.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.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.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 [4 x i8] c"\0A}\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 [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.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 [28 x i8] c"used .tmp on a null pointer\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 [29 x i8] c"used .term on a null pointer\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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1522 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1523 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1524 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1525 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1526 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1527 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1528 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1529 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1530 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1531 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1534 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1535 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.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.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.1537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1540 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1541 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1542 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1543 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1544 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1545 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1546 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1547 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1548 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1549 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1550 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1554 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1555 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1557 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1558 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1560 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1561 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1562 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1563 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1564 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1565 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1566 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1567 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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 [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.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 [12 x i8] c"src/gen.fch\00" -@.str.1578 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1579 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1580 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1581 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1583 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1585 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1586 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1588 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1589 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1590 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1591 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1592 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [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.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.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.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 [5 x i8] c"%src\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1601 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1602 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1604 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1605 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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 [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.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 [2 x i8] c"0\00" -@.str.1683 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1684 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1686 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1687 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1688 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" +@.str.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"u64\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 [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.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 [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.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 [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.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 [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.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 [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.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 [12 x i8] c"src/gen.fch\00" -@.str.1804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1805 = private unnamed_addr constant [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.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 [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.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 [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.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.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 [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.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.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.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.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 [4 x i8] c"f32\00" -@.str.1867 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.1868 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.1869 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.1870 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.1871 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.1872 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1873 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1875 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1876 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.1877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1878 = private unnamed_addr constant [31 x i8] c"used .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.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.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.1884 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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.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.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 [31 x i8] c"used .scopes on a null pointer\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 [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 [35 x i8] c"used .deferLimit on a null pointer\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.1897 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [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.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.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 [29 x i8] c"used .sigs on a null pointer\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 [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.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 [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.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 [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.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 [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.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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.1921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1922 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.1923 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.1924 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1925 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1926 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1927 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1928 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1929 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.1930 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.1931 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.1932 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.1933 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.1934 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.1935 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.1936 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.1937 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1938 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.1939 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1940 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1941 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1942 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1943 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1944 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1945 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1946 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1947 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1948 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.1949 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.1950 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.1951 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.1952 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.1953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1954 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1955 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1956 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.1957 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1958 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1962 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.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.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.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.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.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.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 [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1973 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.1974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1975 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.1976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1977 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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.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.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.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 [2 x i8] c"$\00" @.str.1980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1981 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1982 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.1983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.1984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1985 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1986 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.1987 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1988 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1990 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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 [2 x i8] c"\09\00" -@.str.1994 = 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 [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.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 [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.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 [24 x i8] c"pop() on an empty array\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 [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.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 [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.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 [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.2025 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\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 [35 x i8] c"used .deferLimit on a null pointer\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 [31 x i8] c"used .scopes on a null pointer\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 [29 x i8] c"used .term on a null pointer\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.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.2038 = private unnamed_addr constant [29 x i8] c"used .term 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.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2058 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\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.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.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.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.2062 = 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.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.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 [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.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.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 [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.2073 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.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.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 [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.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.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 [32 x i8] c"used .structs on a null pointer\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 [30 x i8] c"used .progs on a null pointer\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 [30 x i8] c"used .progs on a null pointer\00" +@.str.2095 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2098 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2100 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2097 = private unnamed_addr constant [30 x i8] c"used .progs 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.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 [12 x i8] c"src/gen.fch\00" -@.str.2103 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2102 = private unnamed_addr constant [31 x i8] c"used .module 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 [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.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 [30 x i8] c"used .progs 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 [12 x i8] c"src/gen.fch\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.2112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2113 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2115 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2116 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2117 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2118 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2119 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2120 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2122 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2123 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2124 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.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.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.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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2127 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2129 = private unnamed_addr constant [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.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.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 [30 x i8] c"used .progs on a null pointer\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 [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.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 [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.2143 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.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.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.2151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2152 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2153 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2154 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2155 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2157 = private unnamed_addr constant [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.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 [31 x i8] c"used .module on a null pointer\00" +@.str.2161 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2163 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2164 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2165 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2166 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2169 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2170 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2171 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2172 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2173 = private unnamed_addr constant [77 x i8] c"' here (a method goes in the same file as its struct, or on a struct from C)\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2175 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2176 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2178 = private unnamed_addr constant [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.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.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.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.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.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.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 [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 [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.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 [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.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.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 [12 x i8] c"src/gen.fch\00" @.str.2212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2213 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2216 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.2219 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2221 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.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.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.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.2229 = 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.2231 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.2234 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2236 = private unnamed_addr constant [29 x i8] c"used .sigs 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.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 [12 x i8] c"src/gen.fch\00" -@.str.2239 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2241 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.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 [12 x i8] c"src/gen.fch\00" -@.str.2244 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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 [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.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.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.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 [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.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.2267 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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.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.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 [34 x i8] c"used .templates on a null pointer\00" +@.str.2284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.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.2301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2302 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2304 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2305 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2307 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2309 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2310 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [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.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.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.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.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.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.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.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.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 [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.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 .module on a null pointer\00" +@.str.2326 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2328 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2328 = private unnamed_addr constant [30 x i8] c"used .targs 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 [31 x i8] c"used .module 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.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 .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.2334 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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.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.2340 = 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.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 [33 x i8] c"used .instNote 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.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.2347 = private unnamed_addr constant [30 x i8] c"used .targs 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 .module on a null pointer\00" +@.str.2349 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2351 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [29 x i8] c"used .sigs on a null pointer\00" +@.str.2353 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2355 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2356 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2361 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2355 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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.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.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2366 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2367 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2368 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.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.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.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.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.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.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.2380 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2381 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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 [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.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 [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.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.2390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2391 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2392 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2393 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2395 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2396 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2399 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2401 = private unnamed_addr constant [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.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 [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.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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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 [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [11 x i8] c"argument '\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.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 [12 x i8] c"src/gen.fch\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 [11 x i8] c"argument '\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.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 [32 x i8] c"used .structs on a null pointer\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 [27 x i8] c"used .ci 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.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.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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2438 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2446 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2447 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [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.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.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.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.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.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 [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.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.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.2462 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.2464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2465 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2466 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2467 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2468 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2469 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2471 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2474 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.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.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.2478 = 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.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.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 [33 x i8] c"used .instNote on a null pointer\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 [32 x i8] c"used .structs on a null pointer\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 [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.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.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 [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.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.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.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.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 [33 x i8] c"used .instNote on a null pointer\00" +@.str.2501 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2503 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2503 = private unnamed_addr constant [2 x i8] c")\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 [33 x i8] c"used .instNote on a null pointer\00" @.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2507 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 .progs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\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 [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" @@ -2623,4641 +2623,4645 @@ declare ptr @getenv(ptr) @.str.2518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2519 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2521 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2522 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2523 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2524 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2526 = private unnamed_addr constant [32 x i8] c"used .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.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.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.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 [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.2533 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\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.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.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.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.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.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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [2 x i8] c".\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.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.2566 = private unnamed_addr constant [2 x i8] c".\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.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 [17 x i8] c"division by zero\00" -@.str.2577 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2578 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2579 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2580 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2581 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2582 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2583 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2584 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2585 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2587 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2588 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2589 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2590 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2594 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.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.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.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.2596 = private unnamed_addr constant [7 x i8] c"struct\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.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 [5 x i8] c"void\00" -@.str.2609 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2610 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2612 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.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 [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.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.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.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.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.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.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 [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.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.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.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 [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.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 [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.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 [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.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.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.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.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 [32 x i8] c"used .structs on a null pointer\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 [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.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 [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2722 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2723 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2724 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2726 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2730 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2731 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2736 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2737 = private unnamed_addr constant [3 x i8] c"L:\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 [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.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.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.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.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 [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache on a null pointer\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.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.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.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.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 [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.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.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.2802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2803 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2805 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2806 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2807 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2808 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2809 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2810 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2812 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2813 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2814 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.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.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 [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2819 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2821 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2824 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2826 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.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.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 [31 x i8] c"used .module on a null pointer\00" +@.str.2828 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2830 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2832 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.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.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.2843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2844 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2845 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2847 = private unnamed_addr constant [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.2836 = private unnamed_addr constant [31 x i8] c"used .tnames 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.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 [28 x i8] c"used .cur on a null pointer\00" +@.str.2851 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2854 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2853 = private unnamed_addr constant [30 x i8] c"used .progs 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.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.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.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 [28 x i8] c"used .tmp on a null pointer\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 [29 x i8] c"used .term on a null pointer\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 [30 x i8] c"used .nvars on a null pointer\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 [33 x i8] c"used .dbgScope on a null pointer\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 .debug on a null pointer\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.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.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 .deferOn on a null pointer\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 [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2879 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" @.str.2880 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2881 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.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 [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.2883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\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 [5 x i8] c"enum\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [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.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.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 [28 x i8] c"used .cur 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.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.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 [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.2906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2907 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.2908 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.2909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2910 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2913 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2907 = private unnamed_addr constant [28 x i8] c"used .cur 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.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.2916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2917 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" @.str.2918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2920 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2919 = private unnamed_addr constant [28 x i8] c"used .cur 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.2922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2923 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.2926 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2928 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2929 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2931 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.2932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2933 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2936 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2939 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.2940 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.2941 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2942 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.2943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2944 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2946 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.2947 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.2948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2949 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2952 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2953 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.2954 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2955 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2956 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.2959 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2960 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.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.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.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.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.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.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.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.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.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 [4 x i8] c"\0A}\0A\00" +@.str.2964 = private unnamed_addr constant [2 x i8] c"\0A\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.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.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.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.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 [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.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.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.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.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.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.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.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.3013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3014 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3015 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3019 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3020 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3022 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3023 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3024 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3014 = private unnamed_addr constant [30 x i8] c"used .loops 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 [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.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 [32 x i8] c"used .structs on a null pointer\00" -@.str.3031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3033 = private unnamed_addr constant [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.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 [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.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.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.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.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.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 [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.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.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.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 [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.3072 = private unnamed_addr constant [5 x i8] c"bool\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 [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 [30 x i8] c"used .loops on a null pointer\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.3081 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3082 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3083 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3084 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3085 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3087 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.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.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.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 [21 x i8] c"the start of a range\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.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.3106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3108 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3110 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3111 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3112 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3113 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3114 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3119 = private unnamed_addr constant [4 x i8] c"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.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.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.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 [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.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 [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.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.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.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 [12 x i8] c"src/gen.fch\00" -@.str.3165 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3168 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3169 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3170 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3171 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3173 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3174 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3175 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3176 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3177 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3179 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3180 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3181 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3182 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3186 = private unnamed_addr constant [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.3164 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\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.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.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.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.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 [30 x i8] c"used .loops on a null pointer\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3213 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3214 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3215 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3216 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3219 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3223 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.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.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.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 [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.3225 = private unnamed_addr constant [5 x i8] c"call\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.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.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 [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.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 [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3252 = private unnamed_addr constant [4 x i8] c", 2\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 [29 x i8] c"used .term on a null pointer\00" -@.str.3255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3256 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3257 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3259 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3261 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3262 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3265 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3268 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3269 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.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.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3272 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3274 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3275 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3277 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3280 = private unnamed_addr constant [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.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.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.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 [19 x i8] c"the returned value\00" +@.str.3284 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\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.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 [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.3288 = private unnamed_addr constant [19 x i8] c"the returned value\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 [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.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 [2 x i8] c" \00" -@.str.3298 = private unnamed_addr constant [3 x i8] c", \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.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.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 [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.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.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.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.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.3358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3363 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3364 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3365 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3366 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3367 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3368 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3369 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3370 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3371 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3372 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3374 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3376 = private unnamed_addr constant [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.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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.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 [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.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.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 [6 x i8] c"float\00" +@.str.3393 = private unnamed_addr constant [4 x i8] c"int\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.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.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.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 [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.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.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.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.3410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3411 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.3413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3417 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3418 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3422 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3423 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3424 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3425 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3426 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3427 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3428 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3429 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3430 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3431 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3432 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3434 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3435 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3436 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3437 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3438 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3440 = private unnamed_addr constant [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.3415 = private unnamed_addr constant [24 x i8] c"every value of this map\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.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.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.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 [9 x i8] c"add i64 \00" -@.str.3486 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3487 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3488 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3489 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3490 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3491 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3495 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3496 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3497 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3498 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3501 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3503 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3504 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3507 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3508 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.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.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.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.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.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 [12 x i8] c"src/gen.fch\00" -@.str.3515 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3518 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3520 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3522 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3523 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3524 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3525 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3526 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3527 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3528 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3531 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3533 = private unnamed_addr constant [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.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.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.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.3555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3556 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3558 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3559 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3560 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3561 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3562 = private unnamed_addr constant [81 x i8] c"only a function call can fail; 'or' and 'try' go after one, like int(text) or 0\00" -@.str.3563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3564 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.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.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.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.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.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 .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.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.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 .ftarget on a null pointer\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 [32 x i8] c"used .ffailed on a null pointer\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 [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.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.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 [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.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 [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.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 [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.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 [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3616 = private unnamed_addr constant [4 x i8] c", 2\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 [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.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 [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.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.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 [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.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 [3 x i8] c"0x\00" @.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3660 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3661 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3662 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3663 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3666 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3667 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3668 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3669 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3670 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3671 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3672 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3673 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3674 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3675 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3676 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3677 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3678 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3679 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3680 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3681 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3682 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3683 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3684 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3685 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3687 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3688 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3690 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3691 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3692 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3693 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3694 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3695 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3696 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3697 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3698 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3699 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3701 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3703 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3704 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3705 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.3706 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.3707 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3708 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.3709 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.3710 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.3711 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.3712 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3713 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3714 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3715 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.3716 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3717 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3718 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3719 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3720 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.3721 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.3722 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3723 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3724 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.3725 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.3726 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.3727 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.3728 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3729 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3730 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3731 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3732 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" -@.str.3733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3734 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3736 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.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.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.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.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 [27 x i8] c"used .ty 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 [27 x i8] c"used .ty 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 [28 x i8] c"used .lit 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 [28 x i8] c"used .lit 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 [26 x i8] c"used .v 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.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 [30 x i8] c"used .value on a null pointer\00" +@.str.3756 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" @.str.3757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3758 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.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 [28 x i8] c"used .lit on a null pointer\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 [26 x i8] c"used .v on a null pointer\00" +@.str.3762 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" @.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3766 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" @.str.3767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3768 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.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.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.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.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.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 [26 x i8] c"used .v on a null pointer\00" +@.str.3778 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" @.str.3779 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3780 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" @.str.3781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3782 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3782 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" @.str.3783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3784 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" @.str.3785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3786 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3790 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" @.str.3791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3792 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.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 [27 x i8] c"used .ty on a null pointer\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 [30 x i8] c"used .value on a null pointer\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 [27 x i8] c"used .ty on a null pointer\00" +@.str.3804 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" @.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.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 [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.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 [27 x i8] c"used .ty on a null pointer\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 [30 x i8] c"used .value on a null pointer\00" +@.str.3817 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" @.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3819 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3820 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3824 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.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.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 [27 x i8] c"used .ty on a null pointer\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 [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.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.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 [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.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 [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.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 [12 x i8] c"src/gen.fch\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 [2 x i8] c" \00" -@.str.3900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3901 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3902 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3903 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.3904 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3906 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.3907 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.3908 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.3909 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.3910 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3913 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3914 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3915 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3916 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3918 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3919 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3920 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3921 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3922 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3923 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.3924 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3925 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3926 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3927 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3928 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.3929 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3933 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.3934 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3935 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3936 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3937 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3938 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3939 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3940 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3942 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3943 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.3944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3945 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3946 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3947 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.3948 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3949 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3950 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3951 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3952 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3953 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3954 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3955 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3956 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.3957 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.3958 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.3959 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.3960 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.3962 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.3963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3965 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3966 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3967 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3968 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3969 = private unnamed_addr constant [116 x i8] c"enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3971 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3972 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3973 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3974 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3975 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3977 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3980 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3983 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3984 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3985 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3986 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3987 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3988 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3989 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3990 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3991 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3992 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3993 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.3994 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.3995 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.3996 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.3997 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3998 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3999 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4000 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4001 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4002 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4004 = private unnamed_addr constant [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.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.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.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.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.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 [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.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 [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.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 [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.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 [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.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 [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.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.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 [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.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 [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.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 [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.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"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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [7 x i8] c"struct\00" -@.str.4204 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4205 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4207 = private unnamed_addr constant [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.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 [12 x i8] c"src/gen.fch\00" -@.str.4228 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4230 = private unnamed_addr constant [4 x i8] c"int\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.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.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.4232 = private unnamed_addr constant [4 x i8] c"map\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 [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.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 [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.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.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.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.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 [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.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"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.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 [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.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 [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.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 [6 x i8] c"fixed\00" +@.str.4392 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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.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.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.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.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.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 [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.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 [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.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 [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.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 [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.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 [27 x i8] c"used .tg on a null pointer\00" -@.str.4461 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4462 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4463 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4465 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4468 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4469 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4470 = private unnamed_addr constant [21 x i8] c", which C can't take\00" +@.str.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 [13 x i8] c" the struct \00" -@.str.4474 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4475 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4476 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4477 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4478 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4479 = private unnamed_addr constant [75 x i8] c"an export fn can't fail (C has no errors as values): handle them inside it\00" -@.str.4480 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4482 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4483 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4485 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4486 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4487 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4490 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4491 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4492 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" +@.str.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 [5 x i8] c"bool\00" -@.str.4495 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4496 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4497 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4498 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4499 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4501 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4502 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4503 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4504 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4505 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4506 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4507 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4509 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4510 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4511 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4512 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4513 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4514 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4515 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4516 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4517 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4518 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4520 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4521 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4522 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4523 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4524 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4525 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4526 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4527 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4531 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4532 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4535 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4537 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4538 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4540 = private unnamed_addr constant [82 x i8] c") gives C a function pointer, so it can't be a method or a function that can fail\00" -@.str.4541 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4542 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4543 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4544 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4546 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4548 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4549 = private unnamed_addr constant [96 x i8] c") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not \00" -@.str.4550 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4551 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4552 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4553 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4554 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4556 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4559 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4560 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4561 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4562 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4563 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4566 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4567 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4568 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4569 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4571 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4572 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4573 = private unnamed_addr constant [7 x i8] c"ptr %c\00" +@.str.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.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.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.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 [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.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 [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.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 [2 x i8] c" \00" -@.str.4605 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4606 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4607 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4609 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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 [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.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.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.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.4637 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4638 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4639 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4640 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4642 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.4643 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.4645 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4647 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4648 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4649 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.4650 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4651 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4652 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.4653 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4654 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.4655 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4656 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4657 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4658 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4659 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.4660 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.4661 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4662 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4663 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.4664 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4665 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.4666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4667 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [10 x i8] c"argument \00" -@.str.4671 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.4672 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4673 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4674 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4675 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4676 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4678 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4679 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4680 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4681 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4682 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4683 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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 [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.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.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.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 [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.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.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 [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.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 [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.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 [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.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"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.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.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.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 [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.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"u64\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 [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.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 [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.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"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.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.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.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.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 [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.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.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 [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.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.5007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5008 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5010 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5011 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.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 [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.5014 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \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 [12 x i8] c"src/gen.fch\00" -@.str.5030 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5031 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5032 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5033 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5034 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5036 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5038 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.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.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.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 [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.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 [12 x i8] c"src/gen.fch\00" -@.str.5048 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5049 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5050 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5051 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5053 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5056 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5058 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.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 [27 x i8] c"used .ci on a null pointer\00" +@.str.5060 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.5061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5062 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5063 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5065 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5066 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5071 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5072 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.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 [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.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 [2 x i8] c"'\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 [12 x i8] c"src/gen.fch\00" -@.str.5081 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5083 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5084 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5085 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5086 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5087 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5088 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5089 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5090 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5091 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5092 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5093 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5094 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5095 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5096 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5097 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5098 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5100 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5101 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5102 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5103 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5105 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5106 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5107 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5108 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5109 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.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 [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.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.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 [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.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.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 [2 x i8] c"'\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 [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.5134 = private unnamed_addr constant [16 x i8] c" has no field '\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 [16 x i8] c"zeroinitializer\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 [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 [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.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.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.5148 = private unnamed_addr constant [2 x i8] c"'\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"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.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 .tnames on a null pointer\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 [30 x i8] c"used .targs on a null pointer\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 .scopes on a null pointer\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 [31 x i8] c"used .module on a null pointer\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 [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 [12 x i8] c"src/gen.fch\00" -@.str.5170 = private unnamed_addr constant [17 x i8] c"the default of '\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.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.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 [31 x i8] c"used .module on a null pointer\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 [31 x i8] c"used .tnames on a null pointer\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 [30 x i8] c"used .targs on a null pointer\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 .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.5180 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [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.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 [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.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.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.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 [12 x i8] c"src/gen.fch\00" -@.str.5236 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5239 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.5241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5242 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.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.5245 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5246 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5247 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5248 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5249 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5250 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5251 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5253 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5254 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5255 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5256 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5258 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5260 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5261 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5262 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5263 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5264 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5265 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5266 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5267 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5270 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5271 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.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.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.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.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 [12 x i8] c"src/gen.fch\00" -@.str.5274 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5275 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5276 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5277 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5278 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5279 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5280 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5281 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5282 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5283 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5286 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5287 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5288 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5289 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5290 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5291 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5292 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5293 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5294 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5296 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5297 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5298 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5299 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5300 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5301 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5302 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5303 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5305 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5309 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5310 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5311 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5312 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5313 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.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 [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.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 [5 x i8] c"find\00" -@.str.5335 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5336 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5337 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5338 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5339 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5340 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5341 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5344 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5345 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5346 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5347 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5348 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5349 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5350 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5352 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5354 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.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.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 [12 x i8] c"src/gen.fch\00" -@.str.5357 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5359 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5356 = private unnamed_addr constant [4 x i8] c"int\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.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 [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.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.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.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.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 [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.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 [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.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.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.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 [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.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 [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.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"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.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 [4 x i8] c"int\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 [10 x i8] c"the start\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 [8 x i8] c"the end\00" -@.str.5520 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5521 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5522 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5523 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5524 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5525 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5526 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5527 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5528 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5529 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5530 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5532 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5535 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5536 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5537 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5539 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5540 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5541 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5542 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5543 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5544 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5545 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5546 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5547 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5548 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5549 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5550 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5551 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5552 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5553 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5554 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5555 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5556 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5557 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5558 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5559 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5560 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5561 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5563 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5564 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5565 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5566 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5568 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5570 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5571 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5572 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5574 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5576 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5577 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5578 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.5579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5580 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5581 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.5582 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5583 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5584 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5585 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5586 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5587 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.5588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5589 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5591 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.5592 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.5593 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5594 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5596 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5597 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5598 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.5599 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.5600 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5601 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5602 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5603 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5604 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.5605 = private unnamed_addr constant [107 x i8] c"' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)\00" -@.str.5606 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.5607 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.5608 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.5609 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.5610 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.5611 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.5612 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.5613 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.5614 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.5615 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.5616 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.5617 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.5618 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.5619 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.5620 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.5621 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.5622 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.5623 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.5624 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.5625 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.5626 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.5627 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.5628 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.5629 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.5630 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.5631 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.5632 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.5633 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.5634 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.5635 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.5636 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.5637 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.5638 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.5639 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.5640 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.5641 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.5642 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.5643 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.5644 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.5645 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.5646 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.5647 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.5648 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.5649 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.5650 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.5651 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.5652 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.5653 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.5654 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.5655 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.5656 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.5657 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.5658 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.5659 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.5660 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.5661 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.5662 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.5663 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.5664 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.5665 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.5666 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.5667 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.5668 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.5669 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.5670 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.5671 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.5672 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.5673 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.5674 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.5675 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.5676 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.5677 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5678 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5679 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.5680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5681 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5682 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.5683 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5684 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5685 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.5686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5687 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.5688 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5689 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.5690 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5691 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5692 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5693 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.5694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5695 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5696 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5698 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5699 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5701 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5703 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5704 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5706 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5707 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5710 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.5711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5712 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.5713 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.5714 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" +@.str.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.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.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 [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.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 [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.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.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 [32 x i8] c"used .mdfiles 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.5726 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\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.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 [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 [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.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.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.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 [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.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 [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.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 [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.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" declare ptr @clang_getCString(i64, i64) declare void @clang_disposeString(i64, 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.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 [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.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 [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.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" 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.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.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" declare { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8) -@.str.6020 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6021 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6022 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6023 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6024 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6025 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6026 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6027 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6028 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -declare void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8) +@.str.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 [28 x i8] c"used .out on a null pointer\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 [33 x i8] c"used .defining on a null pointer\00" +@.str.6032 = 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" declare i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8) -@.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.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" declare i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8) declare i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8) -@.str.6036 = private unnamed_addr constant [13 x i8] c"is a C union\00" +@.str.6040 = 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.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.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" 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.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.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 [28 x i8] c"used .imp on a null pointer\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 [26 x i8] c"used .s on a null pointer\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 [34 x i8] c"used .hasHidden on a null pointer\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 [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.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" 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.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.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" 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.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.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" declare { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8) -@.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.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 [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 [16 x i8] c"src/cimport.fch\00" -@.str.6093 = private unnamed_addr constant [5 x i8] c"uUlL\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 [27 x i8] c"used .tu on a null pointer\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" 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.6098 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6099 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare { i64, i64 } @clang_getTokenSpelling(ptr, ptr byval(%S.C.CXToken) align 8) -@.str.6100 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6101 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) @.str.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.6103 = 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 [2 x i8] c")\00" +@.str.6105 = 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 [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.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 [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 [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 [2 x i8] c".\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 [2 x i8] c"e\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"E\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 [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.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 [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.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.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 [28 x i8] c"used .out on a null pointer\00" +@.str.6131 = 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 [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.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 [31 x i8] c"used .header on a null pointer\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" declare i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8) -@.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.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" 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.6149 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6150 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6151 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6152 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" @.str.6153 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" @.str.6154 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8) @.str.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.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 [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6158 = 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 [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.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 [28 x i8] c"used .out on a null pointer\00" -declare i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8) +@.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 [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.6164 = 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" +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.6169 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6170 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6171 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6172 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6173 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6174 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6175 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6176 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.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" +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.6181 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6182 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6183 = private unnamed_addr constant [1 x i8] c"\00" +declare 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" 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.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" 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.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.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" 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.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 [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.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 [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.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 [5 x i8] c"msvc\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"win32\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"apple\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 [7 x i8] c"darwin\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"macos\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 [8 x i8] c"aarch64\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"arm64\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 [6 x i8] c"apple\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 [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.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"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.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 [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.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 [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 [1 x i8] c"\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 [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 [2 x i8] c"\0A\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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [67 x i8] c" add this at the top of your file (with the library's real name):\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 [1 x i8] c"\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 [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.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 [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.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" 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.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 [8 x i8] c" && mv \00" -@.str.6428 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6429 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6430 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6431 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6432 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6433 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6434 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6435 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6436 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6437 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6438 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6439 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6440 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6441 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6442 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6443 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6444 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6445 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6446 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6447 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6448 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6449 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6450 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6451 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6452 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6453 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6454 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" +@.str.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 [7 x i8] c"rm -f \00" -@.str.6459 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6460 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6461 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6462 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6463 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6464 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6465 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6466 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6467 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6468 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6469 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6470 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6471 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6472 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6473 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6474 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6475 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6476 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6477 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6478 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6479 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6480 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6481 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6482 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6483 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6484 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6486 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6487 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6488 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6489 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6491 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6492 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6493 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6494 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6495 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6496 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6497 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6498 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6499 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6500 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6502 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6504 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6505 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6506 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6507 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6508 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6509 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.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 [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 [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.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 [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.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 [2 x i8] c"\0A\00" -@.str.6526 = 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 [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.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.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" +@.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.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" +@.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.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.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 [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 [2 x i8] c":\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 [2 x i8] c"\0A\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.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.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 [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 [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 [3 x i8] c"@V\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 [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 [3 x i8] c"@F\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 [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 [2 x i8] c"|\00" -@.str.6605 = private unnamed_addr constant [3 x i8] c"@S\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 [12 x i8] c"src/lsp.fch\00" -@.str.6609 = 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 [4 x i8] c"@SF\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 [12 x i8] c"src/lsp.fch\00" -@.str.6616 = private unnamed_addr constant [3 x i8] c"@E\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 [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 [2 x i8] c",\00" -@.str.6625 = private unnamed_addr constant [3 x i8] c"@I\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 [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.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 [5 x i8] c" > '\00" -@.str.6641 = private unnamed_addr constant [7 x i8] c"' 2>&1\00" -@.str.6642 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6643 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6644 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.6645 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.6646 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.6647 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.6648 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.6649 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6650 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.6651 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.6652 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6653 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.6654 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.6655 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.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 [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.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 [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 [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 [2 x i8] c"[\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 [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.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 [2 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 [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.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 [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.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 [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.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.6719 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6720 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6720 = private unnamed_addr constant [1 x i8] c"\00" @.str.6721 = private unnamed_addr constant [1 x i8] c"\00" @.str.6722 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6723 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6725 = private unnamed_addr constant [7 x i8] c"module\00" +@.str.6723 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6724 = private unnamed_addr constant [8 x i8] c"struct \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 [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 [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 [13 x i8] c"isIncomplete\00" -@.str.6732 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.6733 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6734 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6735 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6736 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6737 = private unnamed_addr constant [1 x i8] c"\00" +@.str.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.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 [1 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 [12 x i8] c"src/lsp.fch\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.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.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.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 [22 x i8] c"signatureHelpProvider\00" -@.str.6779 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.6780 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.6781 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.6782 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.6783 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.6784 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6785 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.6786 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.6787 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.6788 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.6789 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6790 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.6791 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.6792 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.6793 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.6794 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.6795 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.6796 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.6797 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.6798 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.6799 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.6800 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.6801 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.6802 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.6803 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.6804 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6805 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6806 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6807 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.6808 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.6809 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.6810 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.6811 = private unnamed_addr constant [16 x i8] c"/tmp/finch_lsp_\00" -@.str.6812 = private unnamed_addr constant [9 x i8] c"rm -rf '\00" -@.str.6813 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6814 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6815 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6816 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6818 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.6819 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.6820 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.6821 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.6822 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.6823 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.6824 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6825 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6826 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6827 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" +@.str.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.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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [28 x i8] c"used .src on a null pointer\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 [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.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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [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.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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [28 x i8] c"used .src on a null pointer\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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [20 x i8] c"a hexadecimal digit\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 [28 x i8] c"used .src on a null pointer\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 [26 x i8] c"used .i on a null pointer\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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [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.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 [28 x i8] c"used .src on a null pointer\00" +@.str.7028 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.7029 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7030 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7030 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.7031 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7032 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.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 [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.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 [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.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.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 [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.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 [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.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.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 [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.7054 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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.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.7059 = private unnamed_addr constant [28 x i8] c"used .src 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.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 [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.7064 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\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.7068 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7069 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7070 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7071 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7072 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7073 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7074 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7075 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7076 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7077 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7078 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7079 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7080 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7081 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7082 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7083 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7084 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7069 = private unnamed_addr constant [26 x i8] c"used .i 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.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.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.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.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.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.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.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.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 [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.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" declare void @finch_panic(ptr, i64, ptr) noreturn cold declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold @@ -8849,147 +8853,154 @@ entry: %a459 = alloca { ptr, i64, i64 }, align 16 %a460 = alloca { ptr, i64, i64 }, align 16 %a461 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca i64, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %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 + %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 + %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 %a508 = alloca { ptr, i64, i64 }, align 16 %a509 = alloca { ptr, i64, i64 }, align 16 %a515 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 + %a516 = alloca { ptr, i64, i64 }, align 16 %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca i64, align 16 + %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 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = 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 + %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 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca i64, align 16 - %a569 = alloca %S.ast.Program, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca i64, align 16 - %a579 = alloca i64, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 + %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 %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 + %a588 = alloca i64, align 16 + %a591 = alloca i64, align 16 + %a596 = alloca { ptr, i64, i64 }, align 16 + %a597 = 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 - %a619 = alloca i64, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 + %a628 = alloca i64, align 16 + %a631 = alloca 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 %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 + %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 - %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 + %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 - %a718 = 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 - %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 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a786 = 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 + %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 + %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 %a800 = alloca { ptr, i64, i64 }, align 16 %a801 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %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 + %a805 = alloca %S.platform.Target, align 16 + %a806 = alloca %S.platform.Target, align 16 + %a810 = 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 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a854 = 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 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a863 = 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 - %a879 = 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 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 + %a887 = alloca { ptr, i64, i64 }, align 16 + %a891 = alloca { ptr, i64, i64 }, align 16 + %a896 = 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 - %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 + %a917 = alloca { ptr, i64, i64 }, align 16 + %a921 = alloca { ptr, i64, i64 }, align 16 + %a922 = 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 - %a951 = 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 - %a955 = alloca { ptr, i64, i64 }, align 16 %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca 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 + %a979 = alloca { ptr, i64, i64 }, align 16 + %a980 = alloca { ptr, i64, i64 }, align 16 + %a981 = 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 + %a993 = 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 + %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 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t3 = load i64, ptr %t2 @@ -9828,315 +9839,316 @@ inrange298: 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 + %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 store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch.copy.arr_str(ptr %a509, 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 - %t511 = extractvalue { ptr, i64, i64 } { ptr @.str.206, i64 10, i64 0 }, 0 - %t512 = icmp eq ptr %t511, null - %t513 = select i1 %t512, ptr @.str.207, ptr %t511 - %t514 = call ptr @getenv(ptr %t513) - store { ptr, i64, i64 } zeroinitializer, ptr %a515 - call void @finch_str_from_c(ptr %a515, ptr %t514) - %t516 = load { ptr, i64, i64 }, ptr %a515 - store { ptr, i64, i64 } %t516, ptr %a517 - store { ptr, i64, i64 } { ptr @.str.209, i64 1, i64 0 }, ptr %a519 - call void @finch_str_split(ptr %a520, ptr %a517, ptr %a519) - %t521 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t521, ptr %a522 - store i64 0, ptr %a523 - br label %each.cond310 -each.cond310: - %t524 = getelementptr inbounds { ptr, i64, i64 }, ptr %a522, i32 0, i32 1 - %t525 = load i64, ptr %t524 - %t526 = load i64, ptr %a523 - %t527 = icmp slt i64 %t526, %t525 - br i1 %t527, label %each.body311, label %each.end313 -each.body311: - %t528 = load ptr, ptr %a522 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t528, i64 %t526 - %t530 = load { ptr, i64, i64 }, ptr %t529 - store { ptr, i64, i64 } %t530, ptr %a531 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a531, i32 0, i32 1 - %t533 = load i64, ptr %t532 - %t534 = icmp sgt i64 %t533, 0 - br i1 %t534, label %then314, label %endif316 -then314: - %t535 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 5 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t537, ptr %a538 - call void @finch_str_copy(ptr %a539, ptr %a538) - %t540 = load { ptr, i64, i64 }, ptr %a539 - %t541 = load i64, ptr %t536 - %t542 = add i64 %t541, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t543 = load ptr, ptr %t535 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i64 %t541 - store { ptr, i64, i64 } %t540, ptr %t544 - store i64 %t542, ptr %t536 - br label %endif316 -endif316: - br label %each.step312 -each.step312: - %t545 = load i64, ptr %a523 - %t546 = add i64 %t545, 1 - store i64 %t546, ptr %a523 - br label %each.cond310 -each.end313: - %t547 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a433, { ptr, i64, i64 } %t547, { ptr, i64, i64 } { ptr @.str.210, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a548 - store { ptr, i64, i64 } zeroinitializer, ptr %a549 - %t550 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t550, ptr %a551 - call void @finch.copy.arr_str(ptr %a552, ptr %a551) - %t553 = load { ptr, i64, i64 }, ptr %a552 - store { ptr, i64, i64 } %t553, ptr %a554 - %t555 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch.copy.arr_str(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t558, ptr %a559 - %t560 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 - store i64 0, ptr %a561 - br label %each.cond317 -each.cond317: - %t562 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - %t563 = load i64, ptr %t562 - %t564 = load i64, ptr %a561 - %t565 = icmp slt i64 %t564, %t563 - br i1 %t565, label %each.body318, label %each.end320 -each.body318: - %t566 = load ptr, ptr %t560 - %t567 = getelementptr inbounds %S.ast.Program, ptr %t566, i64 %t564 - %t568 = load %S.ast.Program, ptr %t567 - store %S.ast.Program %t568, ptr %a569 - %t570 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 1 - %t571 = load { ptr, i64, i64 }, ptr %t570 - %t572 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t571) - store { ptr, i64, i64 } %t572, ptr %a573 - %t574 = getelementptr inbounds { ptr, i64, i64 }, ptr %a554, i32 0, i32 1 - %t575 = load { ptr, i64, i64 }, ptr %a573 - store i64 -1, ptr %a576 - %t577 = load i64, ptr %t574 - %t578 = load ptr, ptr %a554 - store i64 0, ptr %a579 - br label %find.cond321 -find.cond321: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t577 - br i1 %t581, label %find.body322, label %find.end325 -find.body322: - %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i64 %t580 + 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 } %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 + %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 + 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 - 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) + %t584 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t583) + 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 + 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) unreachable -inrange334: - %t613 = extractvalue { ptr, i64, i64 } %t610, 0 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t609 - %t615 = load { ptr, i64, i64 }, ptr %t614 - store i64 -1, ptr %a616 - %t617 = load i64, ptr %t607 - %t618 = load ptr, ptr %a549 - store i64 0, ptr %a619 - br label %find.cond335 -find.cond335: - %t620 = load i64, ptr %a619 - %t621 = icmp slt i64 %t620, %t617 - br i1 %t621, label %find.body336, label %find.end339 -find.body336: - %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %t618, i64 %t620 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t623, ptr %a624 - store { ptr, i64, i64 } %t615, ptr %a625 - %t626 = call i32 @finch_str_eq(ptr %a624, ptr %a625) - %t627 = icmp ne i32 %t626, 0 - br i1 %t627, label %find.hit337, label %find.next338 -find.hit337: - store i64 %t620, ptr %a616 - br label %find.end339 -find.next338: - %t628 = add i64 %t620, 1 - store i64 %t628, ptr %a619 - br label %find.cond335 -find.end339: - %t629 = load i64, ptr %a616 - %t630 = icmp sge i64 %t629, 0 - %t631 = xor i1 %t630, true - br i1 %t631, label %then340, label %endif342 -then340: - %t632 = getelementptr inbounds { ptr, i64, i64 }, ptr %a549, i32 0, i32 1 - %t633 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 - %t634 = load i64, ptr %a604 - %t635 = load { ptr, i64, i64 }, ptr %t633 - %t636 = extractvalue { ptr, i64, i64 } %t635, 1 - %t637 = icmp uge i64 %t634, %t636 - br i1 %t637, label %range343, label %inrange344 -range343: - call void @finch_panic_index(ptr @.str.212, i64 245, i64 %t634, i64 %t636) - unreachable -inrange344: - %t638 = extractvalue { ptr, i64, i64 } %t635, 0 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t634 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - call void @finch_str_copy(ptr %a642, ptr %a641) - %t643 = load { ptr, i64, i64 }, ptr %a642 - %t644 = load i64, ptr %t632 - %t645 = add i64 %t644, 1 - call void @finch_arr_reserve(ptr %a549, i64 %t645, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t646 = load ptr, ptr %a549 - %t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t644 - store { ptr, i64, i64 } %t643, ptr %t647 - store i64 %t645, ptr %t632 - %t648 = getelementptr inbounds { ptr, i64, i64 }, ptr %a548, i32 0, i32 1 - %t649 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 - %t650 = load i64, ptr %a604 - %t651 = load { ptr, i64, i64 }, ptr %t649 - %t652 = extractvalue { ptr, i64, i64 } %t651, 1 - %t653 = icmp uge i64 %t650, %t652 - br i1 %t653, label %range345, label %inrange346 +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.213, i64 246, i64 %t650, i64 %t652) + call void @finch_panic_index(ptr @.str.214, i64 245, i64 %t646, i64 %t648) unreachable inrange346: - %t654 = extractvalue { ptr, i64, i64 } %t651, 0 - %t655 = getelementptr inbounds { ptr, i64, i64 }, ptr %t654, i64 %t650 - %t656 = load { ptr, i64, i64 }, ptr %t655 - store { ptr, i64, i64 } %t656, ptr %a657 - call void @finch_str_copy(ptr %a658, ptr %a657) - %t659 = load { ptr, i64, i64 }, ptr %a658 - %t660 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t659, 0 - %t661 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 4 - %t662 = load i64, ptr %a604 + %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.214, i64 246, i64 %t662, i64 %t664) + call void @finch_panic_index(ptr @.str.215, i64 246, i64 %t662, i64 %t664) unreachable inrange348: %t666 = extractvalue { ptr, i64, i64 } %t663, 0 @@ -10145,454 +10157,497 @@ inrange348: 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) + %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 + %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 { 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.ok368: - store %S.cimport.CImports %t756, ptr %a766 - %t767 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 - %t768 = load { ptr, i64, i64 }, ptr %t767 - %t769 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 1 - %t770 = load { ptr, i64, i64 }, ptr %t769 - %t771 = load %S.cimport.CImports, ptr %a766 - %t772 = load i1, ptr %a105 - %t773 = insertvalue %S.gen.Options zeroinitializer, i1 %t772, 0 - %t774 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t774, ptr %a775 - store { ptr, i64, i64 } { ptr @.str.226, i64 5, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_eq(ptr %a775, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - %t779 = insertvalue %S.gen.Options %t773, i1 %t778, 1 - %t780 = load i1, ptr %a106 - %t781 = insertvalue %S.gen.Options %t779, i1 %t780, 2 - %t782 = extractvalue { ptr, i64, i64 } { ptr @.str.227, i64 3, i64 0 }, 0 - %t783 = icmp eq ptr %t782, null - %t784 = select i1 %t783, ptr @.str.228, ptr %t782 - %t785 = call ptr @getenv(ptr %t784) - store { ptr, i64, i64 } zeroinitializer, ptr %a786 - call void @finch_str_from_c(ptr %a786, ptr %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t787, ptr %a788 - call void @finch_str_copy(ptr %a789, ptr %a788) - %t790 = load { ptr, i64, i64 }, ptr %a789 - %t791 = insertvalue %S.gen.Options %t781, { ptr, i64, i64 } %t790, 3 - %t792 = load %S.platform.Target, ptr %a375 - store %S.platform.Target %t792, ptr %a793 - call void @finch.copy.S_platform_Target(ptr %a794, ptr %a793) - %t795 = load %S.platform.Target, ptr %a794 - %t796 = insertvalue %S.gen.Options %t791, %S.platform.Target %t795, 4 - %t797 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t768, { ptr, i64, i64 } %t770, %S.cimport.CImports %t771, %S.gen.Options %t796) - store { ptr, i64, i64 } %t797, ptr %a798 - %t799 = load { ptr, i64, i64 }, ptr %a67 +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 } %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 - 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) + 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 -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 - 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) +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 -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) +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 -inrange385: - %t850 = extractvalue { ptr, i64, i64 } %t847, 0 - %t851 = getelementptr inbounds { ptr, i64, i64 }, ptr %t850, i64 0 - %t852 = load { ptr, i64, i64 }, ptr %t851 - %t853 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t853, ptr %a855 - store { ptr, i64, i64 } { ptr @.str.239, i64 19, i64 0 }, ptr %a856 - call void @finch_str_concat(ptr %a854, ptr %a855, ptr %a856) - %t857 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t857, ptr %a827 - br label %endif383 -endif383: - %t858 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t858, ptr %a859 - %t860 = call i32 @finch_file_exists(ptr %a859) - %t861 = icmp ne i32 %t860, 0 - %t862 = xor i1 %t861, true - br label %logic.from386 -logic.from386: - br i1 %t862, label %logic.rhs387, label %logic.end388 -logic.rhs387: - store { ptr, i64, i64 } { ptr @.str.240, i64 18, i64 0 }, ptr %a863 - %t864 = call i32 @finch_file_exists(ptr %a863) - %t865 = icmp ne i32 %t864, 0 - br label %logic.rend389 -logic.rend389: - br label %logic.end388 -logic.end388: - %t866 = phi i1 [ false, %logic.from386 ], [ %t865, %logic.rend389 ] - br i1 %t866, label %then390, label %endif392 -then390: - store { ptr, i64, i64 } { ptr @.str.241, i64 18, i64 0 }, ptr %a827 - br label %endif392 -endif392: - %t867 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = call i32 @finch_file_exists(ptr %a868) - %t870 = icmp ne i32 %t869, 0 - %t871 = xor i1 %t870, true - br i1 %t871, label %then393, label %endif395 -then393: - %t872 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 1 - %t873 = trunc i64 %t872 to i32 - %t874 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 0 - %t875 = icmp eq ptr %t874, null - %t876 = select i1 %t875, ptr @.str.243, ptr %t874 - %t877 = call i32 (ptr, ...) @printf(ptr @.str.244, i32 %t873, ptr %t876) - %t878 = call i32 (ptr, ...) @printf(ptr @.str.245) +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) 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: +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 +then409: ret i64 1 -endif404: - %t923 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t923, ptr %a924 - store { ptr, i64, i64 } { ptr @.str.249, i64 3, i64 0 }, ptr %a925 - %t926 = call i32 @finch_str_eq(ptr %a924, ptr %a925) - %t927 = icmp ne i32 %t926, 0 - br i1 %t927, label %then405, label %endif407 -then405: - store { ptr, i64, i64 } zeroinitializer, ptr %a928 - store i64 0, ptr %a929 - br label %each.cond408 -each.cond408: - %t930 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t931 = load i64, ptr %t930 - %t932 = load i64, ptr %a929 - %t933 = icmp slt i64 %t932, %t931 - br i1 %t933, label %each.body409, label %each.end411 -each.body409: - %t934 = load ptr, ptr %a113 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i64 %t932 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - %t938 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 - %t939 = load { ptr, i64, i64 }, ptr %a937 - %t940 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t939) - %t941 = load i64, ptr %t938 - %t942 = add i64 %t941, 1 - call void @finch_arr_reserve(ptr %a928, i64 %t942, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t943 = load ptr, ptr %a928 - %t944 = getelementptr inbounds { ptr, i64, i64 }, ptr %t943, i64 %t941 - store { ptr, i64, i64 } %t940, ptr %t944 - store i64 %t942, ptr %t938 - br label %each.step410 -each.step410: - %t945 = load i64, ptr %a929 - %t946 = add i64 %t945, 1 - store i64 %t946, ptr %a929 - br label %each.cond408 -each.end411: - %t947 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 8 - %t948 = load { ptr, i64, i64 }, ptr %t947 - %t949 = load { ptr, i64, i64 }, ptr %a103 - %t950 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t949) - store { ptr, i64, i64 } %t948, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t954, ptr %a956 - store { ptr, i64, i64 } { ptr @.str.250, i64 1, i64 0 }, ptr %a957 - call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957) - %t958 = load { ptr, i64, i64 }, ptr %a955 - %t959 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.251, i64 1, i64 0 }, ptr %a960 - call void @finch_str_join(ptr %a961, ptr %a928, ptr %a960) - %t962 = load { ptr, i64, i64 }, ptr %a961 - store { ptr, i64, i64 } %t958, ptr %a964 - store { ptr, i64, i64 } %t962, ptr %a965 - call void @finch_str_concat(ptr %a963, ptr %a964, ptr %a965) - %t966 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } %t966, ptr %a968 - call void @finch_str_copy(ptr %a967, ptr %a968) - %t969 = call i64 @finch_shell(ptr %a967) - store i64 %t969, ptr %a970 - %t971 = load { ptr, i64, i64 }, ptr %a103 - %t972 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t971) - store { ptr, i64, i64 } { ptr @.str.252, i64 6, i64 0 }, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - %t976 = load { ptr, i64, i64 }, ptr %a973 - store { ptr, i64, i64 } %t976, ptr %a978 - call void @finch_str_copy(ptr %a977, ptr %a978) - %t979 = call i64 @finch_shell(ptr %a977) - %t980 = load i64, ptr %a970 - ret i64 %t980 -endif407: +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 + %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: ret i64 0 } @@ -10602,50 +10657,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: - %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: - %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 + br i1 %t3, label %logic.rhs420, label %logic.end421 logic.rhs420: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 122 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: + %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: + %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: + %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: %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.rend434 +logic.rend434: + br label %logic.end433 +logic.end433: + %t15 = phi i1 [ true, %logic.from431 ], [ %t14, %logic.rend434 ] ret i1 %t15 } @@ -10655,17 +10710,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.from435 +logic.from435: + br i1 %t3, label %logic.rhs436, label %logic.end437 +logic.rhs436: %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.rend438 +logic.rend438: + br label %logic.end437 +logic.end437: + %t6 = phi i1 [ false, %logic.from435 ], [ %t5, %logic.rend438 ] ret i1 %t6 } @@ -10675,50 +10730,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.from439 +logic.from439: + br i1 %t3, label %logic.end441, label %logic.rhs440 +logic.rhs440: %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.from442 +logic.from442: + br i1 %t5, label %logic.rhs443, label %logic.end444 +logic.rhs443: %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: - %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: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 + 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.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.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: + %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: + %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 ] ret i1 %t15 } @@ -10734,47 +10789,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.257, 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.258, 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.259, 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.260, 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.261, 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.262, 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.263, 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.264, 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.265, 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.266, 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.267, 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.268, 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.269, 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.270, 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.271, 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.272, 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.273, 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.274, 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.275, 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.276, 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.277, 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 @@ -10785,27 +10840,27 @@ 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.cond455 +find.cond455: %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.body456, label %find.end459 +find.body456: %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.hit457, label %find.next458 +find.hit457: store i64 %t35, ptr %a31 - br label %find.end452 -find.next451: + br label %find.end459 +find.next458: %t43 = add i64 %t35, 1 store i64 %t43, ptr %a34 - br label %find.cond448 -find.end452: + br label %find.cond455 +find.end459: %t44 = load i64, ptr %a31 %t45 = icmp sge i64 %t44, 0 ret i1 %t45 @@ -10843,15 +10898,15 @@ entry: 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 %panic460, label %ok461 +panic460: + call void @finch_panic(ptr @.str.278, i64 41, ptr @.str.279) unreachable -ok454: +ok461: %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.280, 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,7 +10917,7 @@ ok454: 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 + 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 @@ -10873,7 +10928,7 @@ ok454: 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 + 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 @@ -10885,9 +10940,9 @@ ok454: %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) + %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) @@ -10902,43 +10957,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 %panic462, label %ok463 +panic462: + call void @finch_panic(ptr @.str.286, i64 46, ptr @.str.287) unreachable -ok456: +ok463: %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 %panic464, label %ok465 +panic464: + call void @finch_panic(ptr @.str.288, i64 46, ptr @.str.289) unreachable -ok458: +ok465: %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 %then466, label %endif468 +then466: %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 %panic469, label %ok470 +panic469: + call void @finch_panic(ptr @.str.290, i64 47, ptr @.str.291) unreachable -ok463: +ok470: %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 %panic471, label %ok472 +panic471: + call void @finch_panic(ptr @.str.292, i64 47, ptr @.str.293) unreachable -ok465: +ok472: %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 2 %t21 = load i64, ptr %t20 %t22 = load i64, ptr %a2 @@ -10946,16 +11001,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 %range473, label %inrange474 +range473: + call void @finch_panic_index(ptr @.str.294, i64 47, i64 %t23, i64 %t25) unreachable -inrange467: +inrange474: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 %t29 = load i8, ptr %t28 ret i8 %t29 -endif461: +endif468: %t30 = trunc i64 0 to i8 ret i8 %t30 } @@ -10967,96 +11022,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 %panic475, label %ok476 +panic475: + call void @finch_panic(ptr @.str.295, i64 53, ptr @.str.296) unreachable -ok469: +ok476: %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 %panic477, label %ok478 +panic477: + call void @finch_panic(ptr @.str.297, i64 53, ptr @.str.298) unreachable -ok471: +ok478: %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 %range479, label %inrange480 +range479: + call void @finch_panic_index(ptr @.str.299, i64 53, i64 %t8, i64 %t10) unreachable -inrange473: +inrange480: %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 %then481, label %else482 +then481: %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 %panic484, label %ok485 +panic484: + call void @finch_panic(ptr @.str.300, i64 55, ptr @.str.301) unreachable -ok478: +ok485: %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 %panic486, label %ok487 +panic486: + call void @finch_panic(ptr @.str.302, i64 56, ptr @.str.303) unreachable -ok480: +ok487: %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 %panic488, label %ok489 +panic488: + call void @finch_panic(ptr @.str.304, i64 57, ptr @.str.305) unreachable -ok482: +ok489: %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 store i1 true, ptr %t28 - br label %endif476 -else475: + br label %endif483 +else482: %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 %then490, label %endif492 +then490: %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 %panic493, label %ok494 +panic493: + call void @finch_panic(ptr @.str.306, i64 59, ptr @.str.307) unreachable -ok487: +ok494: %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 %endif492 +endif492: + br label %endif483 +endif483: %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 %panic495, label %ok496 +panic495: + call void @finch_panic(ptr @.str.308, i64 61, ptr @.str.309) unreachable -ok489: +ok496: %t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2 %t41 = load i64, ptr %t40 %t42 = add i64 %t41, 1 @@ -11088,94 +11143,94 @@ entry: %t2 = mul i64 16, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.306, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.310, 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.311, 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.312, 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.313, 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.314, 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.315, 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.316, 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.317, 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.318, 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.319, 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.320, 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.321, 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.322, 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.323, 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.324, 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.325, 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 %panic497, label %ok498 +panic497: + call void @finch_panic(ptr @.str.326, i64 67, ptr @.str.327) unreachable -ok491: +ok498: %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 %panic499, label %ok500 +panic499: + call void @finch_panic(ptr @.str.328, i64 67, ptr @.str.329) unreachable -ok493: +ok500: %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 %then501, label %endif503 +then501: %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 %panic504, label %ok505 +panic504: + call void @finch_panic(ptr @.str.330, i64 68, ptr @.str.331) unreachable -ok498: +ok505: %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 %panic506, label %ok507 +panic506: + call void @finch_panic(ptr @.str.333, i64 68, ptr @.str.334) unreachable -ok500: +ok507: %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 %panic508, label %ok509 +panic508: + call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) unreachable -ok502: +ok509: %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.332, 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 @@ -11184,67 +11239,67 @@ 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.cond510 +find.cond510: %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.body511, label %find.end514 +find.body511: %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.hit512, label %find.next513 +find.hit512: store i64 %t58, ptr %a54 - br label %find.end507 -find.next506: + br label %find.end514 +find.next513: %t66 = add i64 %t58, 1 store i64 %t66, ptr %a57 - br label %find.cond503 -find.end507: + br label %find.cond510 +find.end514: %t67 = load i64, ptr %a54 %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then508, label %endif510 -then508: + br i1 %t68, label %then515, label %endif517 +then515: %t69 = load { ptr, i64, i64 }, ptr %a51 ret { ptr, i64, i64 } %t69 -endif510: - br label %endif496 -endif496: - store { ptr, i64, i64 } { ptr @.str.333, i64 22, i64 0 }, ptr %a70 +endif517: + br label %endif503 +endif503: + store { ptr, i64, i64 } { ptr @.str.337, 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 %panic518, label %ok519 +panic518: + call void @finch_panic(ptr @.str.338, i64 74, ptr @.str.339) unreachable -ok512: +ok519: %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 %panic520, label %ok521 +panic520: + call void @finch_panic(ptr @.str.341, i64 74, ptr @.str.342) unreachable -ok514: +ok521: %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 %panic522, label %ok523 +panic522: + call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) unreachable -ok516: +ok523: %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.340, i64 74) %t86 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load { ptr, i64, i64 }, ptr %a70 @@ -11253,15 +11308,15 @@ 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 %then524, label %endif526 +then524: %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 } +endif526: + ret { ptr, i64, i64 } { ptr @.str.346, i64 0, i64 0 } } define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { @@ -11276,82 +11331,82 @@ entry: 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 %then527, label %endif529 +then527: ret i8 10 -endif522: +endif529: %t5 = load i8, ptr %a2 %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then523, label %endif525 -then523: + br i1 %t6, label %then530, label %endif532 +then530: ret i8 9 -endif525: +endif532: %t7 = load i8, ptr %a2 %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then526, label %endif528 -then526: + br i1 %t8, label %then533, label %endif535 +then533: ret i8 13 -endif528: +endif535: %t9 = load i8, ptr %a2 %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then529, label %endif531 -then529: + br i1 %t10, label %then536, label %endif538 +then536: %t11 = trunc i64 0 to i8 ret i8 %t11 -endif531: +endif538: %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.from539 +logic.from539: + br i1 %t13, label %logic.end541, label %logic.rhs540 +logic.rhs540: %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.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: %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.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: %t20 = load i8, ptr %a2 ret i8 %t20 -endif542: +endif549: %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 %panic550, label %ok551 +panic550: + call void @finch_panic(ptr @.str.347, i64 97, ptr @.str.348) unreachable -ok544: +ok551: %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 %panic552, label %ok553 +panic552: + call void @finch_panic(ptr @.str.349, i64 97, ptr @.str.350) unreachable -ok546: +ok553: %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.351, 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 @@ -11383,20 +11438,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.cond853 -n.cond853: + br label %n.cond860 +n.cond860: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body854, label %n.end855 -n.body854: + 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.cond853 -n.end855: + br label %n.cond860 +n.end862: ret void } @@ -11475,217 +11530,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.cond554 +while.cond554: %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 %panic557, label %ok558 +panic557: + call void @finch_panic(ptr @.str.352, i64 105, ptr @.str.353) unreachable -ok551: +ok558: %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 %panic559, label %ok560 +panic559: + call void @finch_panic(ptr @.str.354, i64 105, ptr @.str.355) unreachable -ok553: +ok560: %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.body555, label %while.end556 +while.body555: %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 %panic561, label %ok562 +panic561: + call void @finch_panic(ptr @.str.356, i64 106, ptr @.str.357) unreachable -ok555: +ok562: %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 %panic563, label %ok564 +panic563: + call void @finch_panic(ptr @.str.358, i64 106, ptr @.str.359) unreachable -ok557: +ok564: %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 %range565, label %inrange566 +range565: + call void @finch_panic_index(ptr @.str.360, i64 106, i64 %t36, i64 %t38) unreachable -inrange559: +inrange566: %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.from567 +logic.from567: + br i1 %t45, label %logic.end569, label %logic.rhs568 +logic.rhs568: %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.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: %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: - %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: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond547 -endif574: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 + 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 %t57, label %logic.rhs576, label %logic.end577 + br i1 %t51, label %logic.end577, label %logic.rhs576 logic.rhs576: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 + %t52 = load i8, ptr %a43 + %t53 = icmp eq i8 %t52, 13 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 + %t54 = phi i1 [ true, %logic.from575 ], [ %t53, %logic.rend578 ] + br i1 %t54, label %then579, label %endif581 then579: - br label %while.cond582 -while.cond582: + %t55 = load ptr, ptr %a18 + call void @finch.lexer.advance(ptr %t55) + br label %while.cond554 +endif581: + %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: + %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: %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) - unreachable -ok586: - %t64 = getelementptr inbounds %S.lexer.Lexer, ptr %t62, i32 0, i32 2 - %t65 = load i64, ptr %t64 - %t66 = load ptr, ptr %a18 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic587, label %ok588 -panic587: - call void @finch_panic(ptr @.str.359, i64 112, ptr @.str.360) - unreachable -ok588: - %t68 = getelementptr inbounds %S.lexer.Lexer, ptr %t66, i32 0, i32 0 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp slt i64 %t65, %t70 - br label %logic.from589 -logic.from589: - br i1 %t71, label %logic.rhs590, label %logic.end591 -logic.rhs590: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic592, label %ok593 + br i1 %t63, label %panic592, label %ok593 panic592: call void @finch_panic(ptr @.str.361, i64 112, ptr @.str.362) unreachable ok593: - %t74 = getelementptr inbounds %S.lexer.Lexer, ptr %t72, i32 0, i32 0 - %t75 = load ptr, ptr %a18 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic594, label %ok595 + %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) unreachable ok595: + %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: + %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) + unreachable +ok600: + %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) + unreachable +ok602: %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 %range603, label %inrange604 +range603: + call void @finch_panic_index(ptr @.str.369, i64 112, i64 %t78, i64 %t80) unreachable -inrange597: +inrange604: %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.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: %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.cond589 +while.end591: + br label %while.cond554 +endif588: %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.from606 +logic.from606: + br i1 %t89, label %logic.rhs607, label %logic.end608 +logic.rhs607: %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.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: %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 %panic613, label %ok614 +panic613: + call void @finch_panic(ptr @.str.370, i64 118, ptr @.str.371) unreachable -ok607: +ok614: %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 %panic615, label %ok616 +panic615: + call void @finch_panic(ptr @.str.372, i64 119, ptr @.str.373) unreachable -ok609: +ok616: %t101 = getelementptr inbounds %S.lexer.Lexer, ptr %t99, i32 0, i32 4 %t102 = load i64, ptr %t101 store i64 %t102, ptr %a103 @@ -11693,310 +11748,310 @@ 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.cond617 +while.cond617: %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) - unreachable -ok614: - %t108 = getelementptr inbounds %S.lexer.Lexer, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = load ptr, ptr %a18 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic615, label %ok616 -panic615: - call void @finch_panic(ptr @.str.372, i64 122, ptr @.str.373) - unreachable -ok616: - %t112 = getelementptr inbounds %S.lexer.Lexer, ptr %t110, i32 0, i32 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp slt i64 %t109, %t114 - br label %logic.from617 -logic.from617: - br i1 %t115, label %logic.rhs618, label %logic.end619 -logic.rhs618: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic620, label %ok621 + br i1 %t107, label %panic620, label %ok621 panic620: call void @finch_panic(ptr @.str.374, i64 122, ptr @.str.375) unreachable ok621: - %t118 = getelementptr inbounds %S.lexer.Lexer, ptr %t116, i32 0, i32 0 - %t119 = load ptr, ptr %a18 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic622, label %ok623 + %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) unreachable ok623: + %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: + %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) + unreachable +ok628: + %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) + unreachable +ok630: %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 %range631, label %inrange632 +range631: + call void @finch_panic_index(ptr @.str.382, i64 122, i64 %t122, i64 %t124) unreachable -inrange625: +inrange632: %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.from633 +logic.from633: + br i1 %t129, label %logic.rhs634, label %logic.end635 +logic.rhs634: %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.rend636 +logic.rend636: + br label %logic.end635 +logic.end635: + %t133 = phi i1 [ false, %logic.from633 ], [ %t132, %logic.rend636 ] %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.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: %t136 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t136) - br label %while.cond610 -while.end612: + br label %while.cond617 +while.end619: %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 %panic638, label %ok639 +panic638: + call void @finch_panic(ptr @.str.383, i64 125, ptr @.str.384) unreachable -ok632: +ok639: %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 %panic640, label %ok641 +panic640: + call void @finch_panic(ptr @.str.385, i64 125, ptr @.str.386) unreachable -ok634: +ok641: %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 %then642, label %endif644 +then642: %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.387, i64 36, i64 0 }) + br label %endif644 +endif644: %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.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 %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 %panic645, label %ok646 +panic645: + call void @finch_panic(ptr @.str.390, i64 133, ptr @.str.391) unreachable -ok639: +ok646: %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 %panic647, label %ok648 +panic647: + call void @finch_panic(ptr @.str.392, i64 133, ptr @.str.393) unreachable -ok641: +ok648: %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 %panic649, label %ok650 +panic649: + call void @finch_panic(ptr @.str.394, i64 133, ptr @.str.395) unreachable -ok643: +ok650: %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 %panic651, label %ok652 +panic651: + call void @finch_panic(ptr @.str.396, i64 134, ptr @.str.397) unreachable -ok645: +ok652: %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 %panic653, label %ok654 +panic653: + call void @finch_panic(ptr @.str.398, i64 135, ptr @.str.399) unreachable -ok647: +ok654: %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 %then655, label %else656 +then655: + br label %while.cond658 +while.cond658: %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) - unreachable -ok655: - %t182 = getelementptr inbounds %S.lexer.Lexer, ptr %t180, i32 0, i32 2 - %t183 = load i64, ptr %t182 - %t184 = load ptr, ptr %a18 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic656, label %ok657 -panic656: - call void @finch_panic(ptr @.str.398, i64 137, ptr @.str.399) - unreachable -ok657: - %t186 = getelementptr inbounds %S.lexer.Lexer, ptr %t184, i32 0, i32 0 - %t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1 - %t188 = load i64, ptr %t187 - %t189 = icmp slt i64 %t183, %t188 - br label %logic.from658 -logic.from658: - br i1 %t189, label %logic.rhs659, label %logic.end660 -logic.rhs659: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic661, label %ok662 + br i1 %t181, label %panic661, label %ok662 panic661: call void @finch_panic(ptr @.str.400, i64 137, ptr @.str.401) unreachable ok662: - %t192 = getelementptr inbounds %S.lexer.Lexer, ptr %t190, i32 0, i32 0 - %t193 = load ptr, ptr %a18 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic663, label %ok664 + %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) unreachable ok664: + %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: + %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) + unreachable +ok669: + %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) + unreachable +ok671: %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 %range672, label %inrange673 +range672: + call void @finch_panic_index(ptr @.str.408, i64 137, i64 %t196, i64 %t198) unreachable -inrange666: +inrange673: %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.from674 +logic.from674: + br i1 %t203, label %logic.end676, label %logic.rhs675 +logic.rhs675: %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 %panic677, label %ok678 +panic677: + call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) unreachable -ok671: +ok678: %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 %panic679, label %ok680 +panic679: + call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) unreachable -ok673: +ok680: %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 %range681, label %inrange682 +range681: + call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t210, i64 %t212) unreachable -inrange675: +inrange682: %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.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: %t220 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t220) - br label %while.cond651 -while.end653: + br label %while.cond658 +while.end660: %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 %panic685, label %ok686 +panic685: + call void @finch_panic(ptr @.str.414, i64 140, ptr @.str.415) unreachable -ok679: +ok686: %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 %panic687, label %ok688 +panic687: + call void @finch_panic(ptr @.str.417, i64 140, ptr @.str.418) unreachable -ok681: +ok688: %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.416, i64 140) %t232 = load { ptr, i64, i64 }, ptr %a226 %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 store { ptr, i64, i64 } %t232, ptr %t233 %t234 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.415, i64 5, i64 0 }, ptr %t234 + 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 %then682, label %endif684 -then682: + 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 @@ -12004,494 +12059,494 @@ then682: 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: + 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 %then685, label %else686 -then685: + 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.416, i64 3, i64 0 }, ptr %t246 + 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.from688 -logic.from688: - br i1 %t248, label %logic.rhs689, label %logic.end690 -logic.rhs689: + 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.from691 -logic.from691: - br i1 %t251, label %logic.end693, label %logic.rhs692 -logic.rhs692: + 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.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: + 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: %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: + br label %while.cond706 +while.cond706: %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 + br i1 %t260, 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 + %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 %range713, label %inrange714 -range713: - call void @finch_panic_index(ptr @.str.425, i64 150, i64 %t275, i64 %t277) + br i1 %t278, label %range720, label %inrange721 +range720: + call void @finch_panic_index(ptr @.str.429, i64 150, i64 %t275, i64 %t277) unreachable -inrange714: +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.from715 -logic.from715: - br i1 %t282, label %logic.end717, label %logic.rhs716 -logic.rhs716: + 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 %panic718, label %ok719 -panic718: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) + br i1 %t284, label %panic725, label %ok726 +panic725: + call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) unreachable -ok719: +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 %panic720, label %ok721 -panic720: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) + br i1 %t287, label %panic727, label %ok728 +panic727: + call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) unreachable -ok721: +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 %range722, label %inrange723 -range722: - call void @finch_panic_index(ptr @.str.430, i64 150, i64 %t289, i64 %t291) + br i1 %t292, label %range729, label %inrange730 +range729: + call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t289, i64 %t291) unreachable -inrange723: +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.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: + 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.cond699 -while.end701: - br label %endif698 -else697: - br label %while.cond726 -while.cond726: + 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 %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.431, i64 154, ptr @.str.432) - 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) - 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 + br i1 %t301, label %panic736, label %ok737 panic736: call void @finch_panic(ptr @.str.435, i64 154, 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 + %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 %range740, label %inrange741 -range740: - call void @finch_panic_index(ptr @.str.439, i64 154, i64 %t316, i64 %t318) + br i1 %t319, label %range747, label %inrange748 +range747: + call void @finch_panic_index(ptr @.str.443, i64 154, i64 %t316, i64 %t318) unreachable -inrange741: +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.from742 -logic.from742: - br i1 %t323, label %logic.end744, label %logic.rhs743 -logic.rhs743: + 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 %panic745, label %ok746 -panic745: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) + br i1 %t325, label %panic752, label %ok753 +panic752: + call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) unreachable -ok746: +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 %panic747, label %ok748 -panic747: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) + br i1 %t328, label %panic754, label %ok755 +panic754: + call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) unreachable -ok748: +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 %range749, label %inrange750 -range749: - call void @finch_panic_index(ptr @.str.444, i64 154, i64 %t330, i64 %t332) + br i1 %t333, label %range756, label %inrange757 +range756: + call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t330, i64 %t332) unreachable -inrange750: +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 - 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: + br label %logic.rend758 +logic.rend758: + br label %logic.end751 +logic.end751: + %t338 = phi i1 [ true, %logic.from749 ], [ %t337, %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.cond726 -while.end728: + 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.from753 -logic.from753: - br i1 %t343, label %logic.rhs754, label %logic.end755 -logic.rhs754: + 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.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: + 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.445, i64 5, i64 0 }, ptr %t348 + store { ptr, i64, i64 } { ptr @.str.449, i64 5, i64 0 }, ptr %t348 %t349 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t349) - br label %while.cond760 -while.cond760: + br label %while.cond767 +while.cond767: %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 + br i1 %t351, 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 + %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: + %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) + 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) + 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 %range774, label %inrange775 -range774: - call void @finch_panic_index(ptr @.str.454, i64 160, i64 %t366, i64 %t368) + br i1 %t369, label %range781, label %inrange782 +range781: + call void @finch_panic_index(ptr @.str.458, i64 160, i64 %t366, i64 %t368) unreachable -inrange775: +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.from776 -logic.from776: - br i1 %t373, label %logic.end778, label %logic.rhs777 -logic.rhs777: + 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 %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) + br i1 %t375, label %panic786, label %ok787 +panic786: + call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) unreachable -ok780: +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 %panic781, label %ok782 -panic781: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) + br i1 %t378, label %panic788, label %ok789 +panic788: + call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) unreachable -ok782: +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 %range783, label %inrange784 -range783: - call void @finch_panic_index(ptr @.str.459, i64 160, i64 %t380, i64 %t382) + br i1 %t383, label %range790, label %inrange791 +range790: + call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t380, i64 %t382) unreachable -inrange784: +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.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: + 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.cond760 -while.end762: - br label %endif759 -endif759: - br label %endif698 -endif698: + 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 %panic787, label %ok788 -panic787: - call void @finch_panic(ptr @.str.460, i64 165, ptr @.str.461) + br i1 %t392, label %panic794, label %ok795 +panic794: + call void @finch_panic(ptr @.str.464, i64 165, ptr @.str.465) unreachable -ok788: +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 %panic789, label %ok790 -panic789: - call void @finch_panic(ptr @.str.463, i64 165, ptr @.str.464) + br i1 %t399, label %panic796, label %ok797 +panic796: + call void @finch_panic(ptr @.str.467, i64 165, ptr @.str.468) unreachable -ok790: +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.462, i64 165) + 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.466, i64 1, i64 0 }, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.467, i64 0, i64 0 }, ptr %a406 + 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 %endif687 -else686: + br label %endif694 +else693: %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: + 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.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: + 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.468, i64 6, i64 0 }, ptr %t416 + 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 %then798, label %endif800 -then798: + 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.469, i64 4, i64 0 }, ptr %t419 - br label %endif800 -endif800: + 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.cond801 -while.cond801: + 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.body802, label %while.end803 -while.body802: + 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.from804 -logic.from804: - br i1 %t429, label %logic.end806, label %logic.rhs805 -logic.rhs805: + 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.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: + 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 %then811, label %endif813 -then811: + 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.470, i64 34, i64 0 }) - br label %endif813 -endif813: + 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.471, i64 32, i64 0 }) - br label %endif810 -endif810: + 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 @@ -12499,8 +12554,8 @@ endif810: 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: + 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 @@ -12510,8 +12565,8 @@ then814: %t457 = load i8, ptr %a454 %t458 = call i8 @finch.lexer.escape(ptr %t456, i8 %t457) store i8 %t458, ptr %a448 - br label %endif816 -endif816: + 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) @@ -12523,92 +12578,92 @@ endif816: %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: + 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.472, i64 0, i64 0 }, ptr %a469 + 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.from817 -logic.from817: - br i1 %t474, label %logic.rhs818, label %logic.end819 -logic.rhs818: + 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.rend820 -logic.rend820: - br label %logic.end819 -logic.end819: - %t479 = phi i1 [ false, %logic.from817 ], [ %t478, %logic.rend820 ] - br i1 %t479, label %then821, label %endif823 -then821: + 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.473, i64 44, i64 0 }) - br label %endif823 -endif823: - br label %endif797 -else796: + 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 %then824, label %endif826 -then824: + 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 %then827, label %else828 -then827: + br i1 %t495, label %then834, label %else835 +then834: store i64 2, ptr %a491 - br label %endif829 -else828: + 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 %then830, label %else831 -then830: + br i1 %t499, label %then837, label %else838 +then837: store i64 3, ptr %a491 - br label %endif832 -else831: + 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 %then833, label %endif835 -then833: + br i1 %t503, label %then840, label %endif842 +then840: 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 + 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 %then836, label %endif838 -then836: - store { ptr, i64, i64 } { ptr @.str.475, i64 74, i64 0 }, ptr %a504 - br label %endif838 -endif838: + 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 @@ -12616,42 +12671,42 @@ endif838: %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) + br i1 %t514, label %panic846, label %ok847 +panic846: + call void @finch_panic(ptr @.str.481, i64 211, ptr @.str.482) unreachable -ok840: +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 %panic841, label %ok842 -panic841: - call void @finch_panic(ptr @.str.480, i64 211, ptr @.str.481) + br i1 %t520, label %panic848, label %ok849 +panic848: + call void @finch_panic(ptr @.str.484, i64 211, ptr @.str.485) unreachable -ok842: +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 %panic843, label %ok844 -panic843: - call void @finch_panic(ptr @.str.482, i64 211, ptr @.str.483) + br i1 %t524, label %panic850, label %ok851 +panic850: + call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) unreachable -ok844: +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.479, i64 211) + 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.476, i64 22, i64 0 }, ptr %a531 + 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.484, i64 1, i64 0 }, ptr %a536 + 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 @@ -12660,26 +12715,26 @@ ok844: 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: + 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.cond845 -for.cond845: + br label %for.cond852 +for.cond852: %t546 = load i64, ptr %a545 %t547 = icmp slt i64 %t546, %t544 - br i1 %t547, label %for.body846, label %for.end848 -for.body846: + 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.step847 -for.step847: + br label %for.step854 +for.step854: %t549 = load i64, ptr %a545 %t550 = add i64 %t549, 1 store i64 %t550, ptr %a545 - br label %for.cond845 -for.end848: + 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 @@ -12692,12 +12747,12 @@ for.end848: 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: + 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 @@ -12710,28 +12765,28 @@ endif650: %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: + 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.485, i64 3, i64 0 }, 0 - %t572 = insertvalue %S.lexer.Token %t571, { ptr, i64, i64 } { ptr @.str.486, i64 0, i64 0 }, 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 %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) + br i1 %t574, label %panic856, label %ok857 +panic856: + call void @finch_panic(ptr @.str.491, i64 221, ptr @.str.492) unreachable -ok850: +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 %panic851, label %ok852 -panic851: - call void @finch_panic(ptr @.str.489, i64 221, ptr @.str.490) + br i1 %t579, label %panic858, label %ok859 +panic858: + call void @finch_panic(ptr @.str.493, i64 221, ptr @.str.494) unreachable -ok852: +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 @@ -12773,7 +12828,7 @@ entry: %a15 = alloca %S.ast.Type, align 16 %a16 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.491, i64 5, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.495, 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 @@ -12808,7 +12863,7 @@ entry: %a27 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.492, i64 3, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.496, 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 @@ -12852,7 +12907,7 @@ entry: %a15 = alloca %S.ast.Type, align 16 %a16 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.493, i64 3, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.497, 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 @@ -12911,48 +12966,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 %then863, label %endif865 +then863: ret i1 false -endif858: +endif865: %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.498, 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.from866 +logic.from866: + br i1 %t16, label %logic.end868, label %logic.rhs867 +logic.rhs867: %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.499, 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.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: %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.500, 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.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: %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 @@ -12961,10 +13016,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.from877 +logic.from877: + br i1 %t38, label %logic.rhs878, label %logic.end879 +logic.rhs878: %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 @@ -12973,90 +13028,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.rend880 +logic.rend880: + br label %logic.end879 +logic.end879: + %t47 = phi i1 [ false, %logic.from877 ], [ %t46, %logic.rend880 ] ret i1 %t47 -endif869: +endif876: %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.501, 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.from881 +logic.from881: + br i1 %t53, label %logic.rhs882, label %logic.end883 +logic.rhs882: %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: - ret i1 false -endif880: - %t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t61 = load { ptr, i64, i64 }, ptr %t60 - store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.498, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from881 -logic.from881: - br i1 %t65, label %logic.end883, label %logic.rhs882 -logic.rhs882: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.499, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 br label %logic.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: + %t59 = phi i1 [ false, %logic.from881 ], [ %t58, %logic.rend884 ] + br i1 %t59, label %then885, label %endif887 +then885: + ret i1 false +endif887: + %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 + %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: + %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 + %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: %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.504, 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.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: %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.505, 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.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: %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 @@ -13064,30 +13119,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 %then903, label %endif905 +then903: ret i1 false -endif898: +endif905: %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.cond906 +for.cond906: %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.body907, label %for.end909 +for.body907: %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 %range910, label %inrange911 +range910: + call void @finch_panic_index(ptr @.str.506, i64 54, i64 %t101, i64 %t103) unreachable -inrange904: +inrange911: %t105 = extractvalue { ptr, i64, i64 } %t102, 0 %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t101 %t107 = load %S.ast.Type, ptr %t106 @@ -13096,29 +13151,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 %range912, label %inrange913 +range912: + call void @finch_panic_index(ptr @.str.507, i64 54, i64 %t109, i64 %t111) unreachable -inrange906: +inrange913: %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 %then914, label %endif916 +then914: ret i1 false -endif909: - br label %for.step901 -for.step901: +endif916: + br label %for.step908 +for.step908: %t118 = load i64, ptr %a97 %t119 = add i64 %t118, 1 store i64 %t119, ptr %a97 - br label %for.cond899 -for.end902: + br label %for.cond906 +for.end909: ret i1 true -endif895: +endif902: ret i1 true } @@ -13183,59 +13238,59 @@ entry: %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.504, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.508, 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 %then917, label %endif919 +then917: %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 %range920, label %inrange921 +range920: + call void @finch_panic_index(ptr @.str.510, i64 65, i64 0, i64 %t10) unreachable -inrange914: +inrange921: %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.509, 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: +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.507, i64 5, i64 0 }, ptr %a23 + 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 %then915, label %endif917 -then915: + 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.508, i64 1, i64 0 }, ptr %a31 + 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.509, i64 1, i64 0 }, ptr %a36 + 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 %range918, label %inrange919 -range918: - call void @finch_panic_index(ptr @.str.510, i64 68, i64 0, i64 %t40) + br i1 %t41, label %range925, label %inrange926 +range925: + call void @finch_panic_index(ptr @.str.514, i64 68, i64 0, i64 %t40) unreachable -inrange919: +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 @@ -13245,45 +13300,45 @@ inrange919: call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) %t49 = load { ptr, i64, i64 }, ptr %a46 ret { ptr, i64, i64 } %t49 -endif917: +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.511, i64 3, i64 0 }, ptr %a53 + 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 %then920, label %endif922 -then920: + 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 %range923, label %inrange924 -range923: - call void @finch_panic_index(ptr @.str.513, i64 71, i64 0, i64 %t58) + br i1 %t59, label %range930, label %inrange931 +range930: + call void @finch_panic_index(ptr @.str.517, i64 71, i64 0, i64 %t58) unreachable -inrange924: +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.512, i64 4, i64 0 }, ptr %a65 + 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.514, i64 1, i64 0 }, ptr %a70 + 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 %range925, label %inrange926 -range925: - call void @finch_panic_index(ptr @.str.515, i64 71, i64 1, i64 %t74) + br i1 %t75, label %range932, label %inrange933 +range932: + call void @finch_panic_index(ptr @.str.519, i64 71, i64 1, i64 %t74) unreachable -inrange926: +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 @@ -13293,94 +13348,94 @@ inrange926: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 ret { ptr, i64, i64 } %t83 -endif922: +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.516, i64 3, i64 0 }, ptr %a87 + 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 %then927, label %endif929 -then927: + 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 %then930, label %endif932 -then930: - ret { ptr, i64, i64 } { ptr @.str.517, i64 3, i64 0 } -endif932: + 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 %range933, label %inrange934 -range933: - call void @finch_panic_index(ptr @.str.519, i64 77, i64 0, i64 %t96) + br i1 %t97, label %range940, label %inrange941 +range940: + call void @finch_panic_index(ptr @.str.523, i64 77, i64 0, i64 %t96) unreachable -inrange934: +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.518, i64 4, i64 0 }, ptr %a103 + 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.520, i64 1, i64 0 }, ptr %a108 + 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 -endif929: +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.521, i64 6, i64 0 }, ptr %a113 + 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.from935 -logic.from935: - br i1 %t115, label %logic.end937, label %logic.rhs936 -logic.rhs936: + 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.522, i64 5, i64 0 }, ptr %a119 + 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.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: + 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.523, i64 4, i64 0 }, ptr %a126 + 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.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: + 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 %then946, label %endif948 -then946: + br i1 %t133, label %then953, label %endif955 +then953: %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t135 = load { ptr, i64, i64 }, ptr %t134 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.524, i64 1, i64 0 }, ptr %a138 + 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 @@ -13390,24 +13445,24 @@ then946: call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) %t145 = load { ptr, i64, i64 }, ptr %a142 ret { ptr, i64, i64 } %t145 -endif948: +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 -endif945: +endif952: %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t152 = load { ptr, i64, i64 }, ptr %t151 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.525, i64 4, i64 0 }, ptr %a154 + 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 %then949, label %endif951 -then949: - ret { ptr, i64, i64 } { ptr @.str.526, i64 7, i64 0 } -endif951: + 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 @@ -13446,15 +13501,15 @@ entry: 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 %panic959, label %ok960 +panic959: + call void @finch_panic(ptr @.str.531, i64 14, ptr @.str.532) unreachable -ok953: +ok960: %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.533, 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,7 +13521,7 @@ ok953: 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 + 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 @@ -13478,7 +13533,7 @@ ok953: 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 + 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 @@ -13490,9 +13545,9 @@ ok953: %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) + %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) @@ -13507,29 +13562,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 %panic961, label %ok962 +panic961: + call void @finch_panic(ptr @.str.539, i64 19, ptr @.str.540) unreachable -ok955: +ok962: %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 %panic963, label %ok964 +panic963: + call void @finch_panic(ptr @.str.541, i64 19, ptr @.str.542) unreachable -ok957: +ok964: %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 %range965, label %inrange966 +range965: + call void @finch_panic_index(ptr @.str.543, i64 19, i64 %t8, i64 %t10) unreachable -inrange959: +inrange966: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13547,29 +13602,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 %panic967, label %ok968 +panic967: + call void @finch_panic(ptr @.str.544, i64 23, ptr @.str.545) unreachable -ok961: +ok968: %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 %panic969, label %ok970 +panic969: + call void @finch_panic(ptr @.str.546, i64 23, ptr @.str.547) unreachable -ok963: +ok970: %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 %range971, label %inrange972 +range971: + call void @finch_panic_index(ptr @.str.548, i64 23, i64 %t8, i64 %t10) unreachable -inrange965: +inrange972: %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 @@ -13591,11 +13646,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 %panic973, label %ok974 +panic973: + call void @finch_panic(ptr @.str.549, i64 27, ptr @.str.550) unreachable -ok967: +ok974: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = load i64, ptr %a2 @@ -13604,48 +13659,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 %panic975, label %ok976 +panic975: + call void @finch_panic(ptr @.str.551, i64 28, ptr @.str.552) unreachable -ok969: +ok976: %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 %then977, label %endif979 +then977: %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 %panic980, label %ok981 +panic980: + call void @finch_panic(ptr @.str.553, i64 29, ptr @.str.554) unreachable -ok974: +ok981: %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 %endif979 +endif979: %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 %panic982, label %ok983 +panic982: + call void @finch_panic(ptr @.str.555, i64 31, ptr @.str.556) unreachable -ok976: +ok983: %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 %range984, label %inrange985 +range984: + call void @finch_panic_index(ptr @.str.557, i64 31, i64 %t26, i64 %t28) unreachable -inrange978: +inrange985: %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 @@ -13666,29 +13721,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 %panic986, label %ok987 +panic986: + call void @finch_panic(ptr @.str.558, i64 35, ptr @.str.559) unreachable -ok980: +ok987: %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 %panic988, label %ok989 +panic988: + call void @finch_panic(ptr @.str.560, i64 35, ptr @.str.561) unreachable -ok982: +ok989: %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 %range990, label %inrange991 +range990: + call void @finch_panic_index(ptr @.str.562, i64 35, i64 %t9, i64 %t11) unreachable -inrange984: +inrange991: %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 @@ -13712,29 +13767,29 @@ entry: 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 %panic992, label %ok993 +panic992: + call void @finch_panic(ptr @.str.563, i64 39, ptr @.str.564) unreachable -ok986: +ok993: %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 %panic994, label %ok995 +panic994: + call void @finch_panic(ptr @.str.565, i64 39, ptr @.str.566) unreachable -ok988: +ok995: %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 %range996, label %inrange997 +range996: + call void @finch_panic_index(ptr @.str.567, i64 39, i64 %t8, i64 %t10) unreachable -inrange990: +inrange997: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -13744,11 +13799,11 @@ 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 %panic998, label %ok999 +panic998: + call void @finch_panic(ptr @.str.568, i64 40, ptr @.str.569) unreachable -ok992: +ok999: %t21 = getelementptr inbounds %S.parser.Parser, ptr %t19, i32 0, i32 1 %t22 = load i64, ptr %t21 %t23 = add i64 %t22, 1 @@ -13769,21 +13824,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 %then1000, label %endif1002 +then1000: %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 %panic1003, label %ok1004 +panic1003: + call void @finch_panic(ptr @.str.570, i64 46, ptr @.str.571) unreachable -ok997: +ok1004: %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: +endif1002: ret i1 false } @@ -13818,86 +13873,86 @@ entry: %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.568, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.572, 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 %then1005, label %endif1007 +then1005: %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.573, 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.574, 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: +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.571, i64 3, i64 0 }, ptr %a21 + 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 %then1001, label %endif1003 -then1001: - ret { ptr, i64, i64 } { ptr @.str.572, i64 11, i64 0 } -endif1003: + 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.573, i64 3, i64 0 }, ptr %a27 + 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.from1004 -logic.from1004: - br i1 %t29, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: + 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.574, i64 5, i64 0 }, ptr %a33 + 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.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: + 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.576, i64 6, i64 0 }, ptr %a40 + 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 %then1011, label %endif1013 -then1011: - ret { ptr, i64, i64 } { ptr @.str.577, i64 8, i64 0 } -endif1013: + 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.578, i64 4, i64 0 }, ptr %a46 + 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 %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.579, i64 6, i64 0 } -endif1016: + 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.580, i64 1, i64 0 }, ptr %a52 + 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.581, i64 1, i64 0 }, ptr %a57 + 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 @@ -13924,18 +13979,18 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %a2 %t6 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } %t5) %t7 = xor i1 %t6, true - br i1 %t7, label %then1017, label %endif1019 -then1017: + br i1 %t7, label %then1024, label %endif1026 +then1024: %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.586, 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.587, 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 @@ -13946,8 +14001,8 @@ then1017: 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: + br label %endif1026 +endif1026: %t27 = load ptr, ptr %a1 %t28 = call %S.lexer.Token @finch.parser.next(ptr %t27) ret %S.lexer.Token %t28 @@ -13959,53 +14014,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) - unreachable -ok1021: - %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 2 - %t5 = load i64, ptr %t4 - %t6 = icmp sgt i64 %t5, 0 - br label %logic.from1022 -logic.from1022: - br i1 %t6, label %logic.end1024, label %logic.rhs1023 -logic.rhs1023: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.586, i64 79, ptr @.str.587) - unreachable -ok1026: - %t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 0 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic1027, label %ok1028 + br i1 %t3, label %panic1027, label %ok1028 panic1027: call void @finch_panic(ptr @.str.588, i64 79, ptr @.str.589) unreachable ok1028: + %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: + %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) + unreachable +ok1033: + %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) + unreachable +ok1035: %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 %range1036, label %inrange1037 +range1036: + call void @finch_panic_index(ptr @.str.594, i64 79, i64 %t13, i64 %t15) unreachable -inrange1030: +inrange1037: %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.rend1038 +logic.rend1038: + br label %logic.end1031 +logic.end1031: + %t22 = phi i1 [ true, %logic.from1029 ], [ %t21, %logic.rend1038 ] ret i1 %t22 } @@ -14022,29 +14077,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 %panic1039, label %ok1040 +panic1039: + call void @finch_panic(ptr @.str.595, i64 83, ptr @.str.596) unreachable -ok1033: +ok1040: %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 %panic1041, label %ok1042 +panic1041: + call void @finch_panic(ptr @.str.597, i64 83, ptr @.str.598) unreachable -ok1035: +ok1042: %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 %range1043, label %inrange1044 +range1043: + call void @finch_panic_index(ptr @.str.599, i64 83, i64 %t9, i64 %t11) unreachable -inrange1037: +inrange1044: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 %t15 = load %S.lexer.Token, ptr %t14 @@ -14065,11 +14120,11 @@ 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 %panic1045, label %ok1046 +panic1045: + call void @finch_panic(ptr @.str.600, i64 84, ptr @.str.601) unreachable -ok1039: +ok1046: %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 @@ -14088,37 +14143,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.602, 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.603, 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.604, 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.605, 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.606, 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.607, 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.608, 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.609, 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.610, 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.611, 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.612, 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.613, 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.614, 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.615, 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.616, 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.617, 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 @@ -14129,27 +14184,27 @@ 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.cond1047 +find.cond1047: %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.body1048, label %find.end1051 +find.body1048: %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.hit1049, label %find.next1050 +find.hit1049: store i64 %t30, ptr %a26 - br label %find.end1044 -find.next1043: + br label %find.end1051 +find.next1050: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond1040 -find.end1044: + br label %find.cond1047 +find.end1051: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 ret i1 %t40 @@ -14192,38 +14247,38 @@ entry: %a144 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.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.618, i64 1, i64 0 }) + br i1 %t3, label %then1052, label %endif1054 +then1052: %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 }) + %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 -endif1047: +endif1054: %t9 = load ptr, ptr %a1 - %t10 = call i1 @finch.parser.at(ptr %t9, { ptr, i64, i64 } { ptr @.str.617, i64 5, i64 0 }) + %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 %then1048, label %endif1050 -then1048: + 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) %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 } { 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.619, i64 56, i64 0 }, ptr %a24 + 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 %endif1050 -endif1050: + 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 @@ -14233,91 +14288,91 @@ endif1050: 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 + 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.from1051 -logic.from1051: - br i1 %t37, label %logic.rhs1052, label %logic.end1053 -logic.rhs1052: + 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.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: + %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 %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 }) + %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 %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: +endif1064: %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: + 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.624, i64 3, i64 0 }, ptr %a56 + 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.from1061 -logic.from1061: - br i1 %t58, label %logic.rhs1062, label %logic.end1063 -logic.rhs1062: + br label %logic.from1068 +logic.from1068: + br i1 %t58, label %logic.rhs1069, label %logic.end1070 +logic.rhs1069: %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: + %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.626, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.627, i64 3, i64 0 }) + %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 -endif1067: +endif1074: %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 + 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 %then1068, label %endif1070 -then1068: - %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.629, i64 3, i64 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 -endif1070: +endif1077: %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 + 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 %then1071, label %endif1073 -then1071: - %t80 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.631, i64 5, i64 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 -endif1073: +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 -endif1060: - %t83 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.632, i64 5, i64 0 }, 0 +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) @@ -14325,24 +14380,24 @@ endif1060: %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: + %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.634, i64 5, i64 0 }, ptr %a95 + 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.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: + 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 @@ -14359,46 +14414,46 @@ then1078: %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: + br label %endif1087 +endif1087: %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: + %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.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: + 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) store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.636, i64 1, i64 0 }, ptr %a123 + 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.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: + 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.cond1092 -while.cond1092: - br label %while.body1093 -while.body1093: + 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 @@ -14411,18 +14466,18 @@ while.body1093: 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 }) + %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 %then1095, label %endif1097 -then1095: - br label %while.end1094 -endif1097: - br label %while.cond1092 -while.end1094: + 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.638, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.639, i64 28, i64 0 }) - br label %endif1091 -endif1091: + %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) @@ -14452,87 +14507,87 @@ entry: %a105 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.644, 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.from1105 +logic.from1105: + br i1 %t4, label %logic.end1107, label %logic.rhs1106 +logic.rhs1106: %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.645, 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: + 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.642, i64 1, i64 0 }, ptr %a15 + 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.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: + 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: ret i1 false -endif1108: +endif1115: 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) + br i1 %t21, label %panic1116, label %ok1117 +panic1116: + call void @finch_panic(ptr @.str.647, i64 148, ptr @.str.648) unreachable -ok1110: +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.cond1111 -while.cond1111: + 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 %panic1114, label %ok1115 -panic1114: - call void @finch_panic(ptr @.str.645, i64 149, ptr @.str.646) + br i1 %t28, label %panic1121, label %ok1122 +panic1121: + call void @finch_panic(ptr @.str.649, i64 149, ptr @.str.650) unreachable -ok1115: +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.body1112, label %while.end1113 -while.body1112: + 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 %panic1116, label %ok1117 -panic1116: - call void @finch_panic(ptr @.str.647, i64 150, ptr @.str.648) + br i1 %t34, label %panic1123, label %ok1124 +panic1123: + call void @finch_panic(ptr @.str.651, i64 150, ptr @.str.652) unreachable -ok1117: +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 %range1118, label %inrange1119 -range1118: - call void @finch_panic_index(ptr @.str.649, i64 150, i64 %t36, i64 %t38) + br i1 %t39, label %range1125, label %inrange1126 +range1125: + call void @finch_panic_index(ptr @.str.653, i64 150, i64 %t36, i64 %t38) unreachable -inrange1119: +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 @@ -14543,173 +14598,173 @@ inrange1119: store { ptr, i64, i64 } %t46, ptr %a47 %t48 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.650, i64 1, i64 0 }, ptr %a50 + 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 %then1120, label %else1121 -then1120: + 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 %endif1122 -else1121: + br label %endif1129 +else1128: %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 + 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 %then1123, label %else1124 -then1123: + 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 %then1126, label %endif1128 -then1126: + 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 %panic1129, label %ok1130 -panic1129: - call void @finch_panic(ptr @.str.652, i64 156, ptr @.str.653) + br i1 %t67, label %panic1136, label %ok1137 +panic1136: + call void @finch_panic(ptr @.str.656, i64 156, ptr @.str.657) unreachable -ok1130: +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.from1131 -logic.from1131: - br i1 %t71, label %logic.rhs1132, label %logic.end1133 -logic.rhs1132: + 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 %panic1134, label %ok1135 -panic1134: - call void @finch_panic(ptr @.str.654, i64 156, ptr @.str.655) + br i1 %t73, label %panic1141, label %ok1142 +panic1141: + call void @finch_panic(ptr @.str.658, i64 156, ptr @.str.659) unreachable -ok1135: +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 %range1136, label %inrange1137 -range1136: - call void @finch_panic_index(ptr @.str.656, i64 156, i64 %t76, i64 %t78) + br i1 %t79, label %range1143, label %inrange1144 +range1143: + call void @finch_panic_index(ptr @.str.660, i64 156, i64 %t76, i64 %t78) unreachable -inrange1137: +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.657, i64 5, i64 0 }, ptr %a85 + 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.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: + 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 %panic1142, label %ok1143 -panic1142: - call void @finch_panic(ptr @.str.658, i64 156, ptr @.str.659) + br i1 %t90, label %panic1149, label %ok1150 +panic1149: + call void @finch_panic(ptr @.str.662, i64 156, ptr @.str.663) unreachable -ok1143: +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 %range1144, label %inrange1145 -range1144: - call void @finch_panic_index(ptr @.str.660, i64 156, i64 %t93, i64 %t95) + br i1 %t96, label %range1151, label %inrange1152 +range1151: + call void @finch_panic_index(ptr @.str.664, i64 156, i64 %t93, i64 %t95) unreachable -inrange1145: +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.rend1146 -logic.rend1146: - br label %logic.end1141 -logic.end1141: - %t102 = phi i1 [ false, %logic.from1139 ], [ %t101, %logic.rend1146 ] + br label %logic.rend1153 +logic.rend1153: + br label %logic.end1148 +logic.end1148: + %t102 = phi i1 [ false, %logic.from1146 ], [ %t101, %logic.rend1153 ] ret i1 %t102 -endif1128: - br label %endif1125 -else1124: +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.661, i64 3, i64 0 }, ptr %a105 + 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.from1147 -logic.from1147: - br i1 %t107, label %logic.end1149, label %logic.rhs1148 -logic.rhs1148: + 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 %panic1150, label %ok1151 -panic1150: - call void @finch_panic(ptr @.str.662, i64 158, ptr @.str.663) + br i1 %t109, label %panic1157, label %ok1158 +panic1157: + call void @finch_panic(ptr @.str.666, i64 158, ptr @.str.667) unreachable -ok1151: +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 %range1152, label %inrange1153 -range1152: - call void @finch_panic_index(ptr @.str.664, i64 158, i64 %t111, i64 %t113) + br i1 %t114, label %range1159, label %inrange1160 +range1159: + call void @finch_panic_index(ptr @.str.668, i64 158, i64 %t111, i64 %t113) unreachable -inrange1153: +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.from1154 -logic.from1154: - br i1 %t118, label %logic.rhs1155, label %logic.end1156 -logic.rhs1155: + 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.rend1157 -logic.rend1157: + 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: - %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: + %t122 = phi i1 [ true, %logic.from1154 ], [ %t121, %logic.rend1165 ] + br i1 %t122, label %then1166, label %endif1168 +then1166: ret i1 false -endif1161: - br label %endif1125 -endif1125: - br label %endif1122 -endif1122: +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.cond1111 -while.end1113: + br label %while.cond1118 +while.end1120: ret i1 false } @@ -14720,11 +14775,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 %panic1169, label %ok1170 +panic1169: + call void @finch_panic(ptr @.str.669, i64 168, ptr @.str.670) unreachable -ok1163: +ok1170: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = sub i64 %t5, 1 @@ -14734,11 +14789,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 %panic1171, label %ok1172 +panic1171: + call void @finch_panic(ptr @.str.671, i64 170, ptr @.str.672) unreachable -ok1165: +ok1172: %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = add i64 %t13, 1 @@ -14771,112 +14826,112 @@ entry: %t2 = load ptr, ptr %a1 %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.669, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.673, 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: + 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 %panic1169, label %ok1170 -panic1169: - call void @finch_panic(ptr @.str.670, i64 176, ptr @.str.671) + br i1 %t9, label %panic1176, label %ok1177 +panic1176: + call void @finch_panic(ptr @.str.674, i64 176, ptr @.str.675) unreachable -ok1170: +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 %panic1171, label %ok1172 -panic1171: - call void @finch_panic(ptr @.str.672, i64 176, ptr @.str.673) + br i1 %t12, label %panic1178, label %ok1179 +panic1178: + call void @finch_panic(ptr @.str.676, i64 176, ptr @.str.677) unreachable -ok1172: +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 %range1173, label %inrange1174 -range1173: - call void @finch_panic_index(ptr @.str.674, i64 176, i64 %t15, i64 %t17) + br i1 %t18, label %range1180, label %inrange1181 +range1180: + call void @finch_panic_index(ptr @.str.678, i64 176, i64 %t15, i64 %t17) unreachable -inrange1174: +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.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: + 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.675, i64 1, i64 0 }, ptr %a27 + 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.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: + 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: ret i1 false -endif1182: +endif1189: 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) + br i1 %t33, label %panic1190, label %ok1191 +panic1190: + call void @finch_panic(ptr @.str.680, i64 180, ptr @.str.681) unreachable -ok1184: +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.cond1185 -while.cond1185: + 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 %panic1188, label %ok1189 -panic1188: - call void @finch_panic(ptr @.str.678, i64 181, ptr @.str.679) + br i1 %t40, label %panic1195, label %ok1196 +panic1195: + call void @finch_panic(ptr @.str.682, i64 181, ptr @.str.683) unreachable -ok1189: +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.body1186, label %while.end1187 -while.body1186: + 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 %panic1190, label %ok1191 -panic1190: - call void @finch_panic(ptr @.str.680, i64 182, ptr @.str.681) + br i1 %t46, label %panic1197, label %ok1198 +panic1197: + call void @finch_panic(ptr @.str.684, i64 182, ptr @.str.685) unreachable -ok1191: +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 %range1192, label %inrange1193 -range1192: - call void @finch_panic_index(ptr @.str.682, i64 182, i64 %t48, i64 %t50) + br i1 %t51, label %range1199, label %inrange1200 +range1199: + call void @finch_panic_index(ptr @.str.686, i64 182, i64 %t48, i64 %t50) unreachable -inrange1193: +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 @@ -14887,162 +14942,162 @@ inrange1193: store { ptr, i64, i64 } %t58, ptr %a59 %t60 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.683, i64 1, i64 0 }, ptr %a62 + 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 %then1194, label %else1195 -then1194: + 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 %endif1196 -else1195: + br label %endif1203 +else1202: %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 + 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 %then1197, label %else1198 -then1197: + 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 %then1200, label %endif1202 -then1200: + 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 %panic1203, label %ok1204 -panic1203: - call void @finch_panic(ptr @.str.685, i64 188, ptr @.str.686) + br i1 %t79, label %panic1210, label %ok1211 +panic1210: + call void @finch_panic(ptr @.str.689, i64 188, ptr @.str.690) unreachable -ok1204: +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.from1205 -logic.from1205: - br i1 %t83, label %logic.rhs1206, label %logic.end1207 -logic.rhs1206: + 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 %panic1208, label %ok1209 -panic1208: - call void @finch_panic(ptr @.str.687, i64 188, ptr @.str.688) + br i1 %t85, label %panic1215, label %ok1216 +panic1215: + call void @finch_panic(ptr @.str.691, i64 188, ptr @.str.692) unreachable -ok1209: +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 %range1210, label %inrange1211 -range1210: - call void @finch_panic_index(ptr @.str.689, i64 188, i64 %t88, i64 %t90) + br i1 %t91, label %range1217, label %inrange1218 +range1217: + call void @finch_panic_index(ptr @.str.693, i64 188, i64 %t88, i64 %t90) unreachable -inrange1211: +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.690, i64 1, i64 0 }, ptr %a97 + 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.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: + 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 %panic1216, label %ok1217 -panic1216: - call void @finch_panic(ptr @.str.691, i64 188, ptr @.str.692) + br i1 %t102, label %panic1223, label %ok1224 +panic1223: + call void @finch_panic(ptr @.str.695, i64 188, ptr @.str.696) unreachable -ok1217: +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 %range1218, label %inrange1219 -range1218: - call void @finch_panic_index(ptr @.str.693, i64 188, i64 %t105, i64 %t107) + br i1 %t108, label %range1225, label %inrange1226 +range1225: + call void @finch_panic_index(ptr @.str.697, i64 188, i64 %t105, i64 %t107) unreachable -inrange1219: +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.rend1220 -logic.rend1220: - br label %logic.end1215 -logic.end1215: - %t114 = phi i1 [ false, %logic.from1213 ], [ %t113, %logic.rend1220 ] + br label %logic.rend1227 +logic.rend1227: + br label %logic.end1222 +logic.end1222: + %t114 = phi i1 [ false, %logic.from1220 ], [ %t113, %logic.rend1227 ] ret i1 %t114 -endif1202: - br label %endif1199 -else1198: +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.694, i64 3, i64 0 }, ptr %a117 + 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.from1221 -logic.from1221: - br i1 %t119, label %logic.end1223, label %logic.rhs1222 -logic.rhs1222: + 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 %panic1224, label %ok1225 -panic1224: - call void @finch_panic(ptr @.str.695, i64 190, ptr @.str.696) + br i1 %t121, label %panic1231, label %ok1232 +panic1231: + call void @finch_panic(ptr @.str.699, i64 190, ptr @.str.700) unreachable -ok1225: +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 %range1226, label %inrange1227 -range1226: - call void @finch_panic_index(ptr @.str.697, i64 190, i64 %t123, i64 %t125) + br i1 %t126, label %range1233, label %inrange1234 +range1233: + call void @finch_panic_index(ptr @.str.701, i64 190, i64 %t123, i64 %t125) unreachable -inrange1227: +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.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: + 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: ret i1 false -endif1231: - br label %endif1199 -endif1199: - br label %endif1196 -endif1196: +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.cond1185 -while.end1187: + br label %while.cond1192 +while.end1194: ret i1 false } @@ -15073,72 +15128,72 @@ entry: 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 %then1239, label %endif1241 +then1239: ret i1 true -endif1234: +endif1241: %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.702, i64 1, i64 0 }) + br i1 %t5, label %then1242, label %endif1244 +then1242: %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.703, i64 1, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 ret i1 %t11 -endif1237: +endif1244: %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.at(ptr %t12, { ptr, i64, i64 } { ptr @.str.700, i64 5, i64 0 }) + %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 %then1238, label %endif1240 -then1238: + br i1 %t14, label %then1245, label %endif1247 +then1245: ret i1 false -endif1240: +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.701, i64 5, i64 0 }, ptr %a20 + 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 %then1241, label %endif1243 -then1241: + br i1 %t22, label %then1248, label %endif1250 +then1248: %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) + br i1 %t24, label %panic1251, label %ok1252 +panic1251: + call void @finch_panic(ptr @.str.706, i64 210, ptr @.str.707) unreachable -ok1245: +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 %panic1246, label %ok1247 -panic1246: - call void @finch_panic(ptr @.str.704, i64 210, ptr @.str.705) + br i1 %t27, label %panic1253, label %ok1254 +panic1253: + call void @finch_panic(ptr @.str.708, i64 210, ptr @.str.709) unreachable -ok1247: +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 %range1248, label %inrange1249 -range1248: - call void @finch_panic_index(ptr @.str.706, i64 210, i64 %t30, i64 %t32) + br i1 %t33, label %range1255, label %inrange1256 +range1255: + call void @finch_panic_index(ptr @.str.710, i64 210, i64 %t30, i64 %t32) unreachable -inrange1249: +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 -endif1243: +endif1250: %t39 = load ptr, ptr %a1 %t40 = call %S.lexer.Token @finch.parser.cur(ptr %t39) %t41 = extractvalue %S.lexer.Token %t40, 1 @@ -15146,13 +15201,13 @@ endif1243: 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 + 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.from1250 -logic.from1250: - br i1 %t48, label %logic.end1252, label %logic.rhs1251 -logic.rhs1251: + 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 @@ -15160,107 +15215,107 @@ logic.rhs1251: call void @finch_str_copy(ptr %a53, ptr %a52) %t54 = load { ptr, i64, i64 }, ptr %a53 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.708, i64 3, i64 0 }, ptr %a56 + 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.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: - 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.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 %t70, label %logic.rhs1262, label %logic.end1263 + br i1 %t59, 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 + %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: - %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: + %t65 = phi i1 [ false, %logic.from1261 ], [ %t64, %logic.rend1264 ] + br i1 %t65, label %then1265, label %endif1267 +then1265: + 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.712, i64 5, i64 0 }, ptr %a81 + 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.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: + 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 %panic1272, label %ok1273 -panic1272: - call void @finch_panic(ptr @.str.713, i64 215, ptr @.str.714) + br i1 %t86, label %panic1279, label %ok1280 +panic1279: + call void @finch_panic(ptr @.str.717, i64 215, ptr @.str.718) unreachable -ok1273: +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 %panic1274, label %ok1275 -panic1274: - call void @finch_panic(ptr @.str.715, i64 215, ptr @.str.716) + br i1 %t89, label %panic1281, label %ok1282 +panic1281: + call void @finch_panic(ptr @.str.719, i64 215, ptr @.str.720) unreachable -ok1275: +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 %range1276, label %inrange1277 -range1276: - call void @finch_panic_index(ptr @.str.717, i64 215, i64 %t92, i64 %t94) + br i1 %t95, label %range1283, label %inrange1284 +range1283: + call void @finch_panic_index(ptr @.str.721, i64 215, i64 %t92, i64 %t94) unreachable -inrange1277: +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.rend1278 -logic.rend1278: - br label %logic.end1271 -logic.end1271: - %t101 = phi i1 [ false, %logic.from1269 ], [ %t100, %logic.rend1278 ] + br label %logic.rend1285 +logic.rend1285: + br label %logic.end1278 +logic.end1278: + %t101 = phi i1 [ false, %logic.from1276 ], [ %t100, %logic.rend1285 ] ret i1 %t101 } @@ -15275,46 +15330,46 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.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.722, i64 1, i64 0 }) + br label %logic.from1286 +logic.from1286: + br i1 %t3, label %logic.end1288, label %logic.rhs1287 +logic.rhs1287: %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.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: %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: + 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: ret void -endif1289: +endif1296: %t11 = load ptr, ptr %a1 %t12 = load ptr, ptr %a1 %t13 = call %S.lexer.Token @finch.parser.cur(ptr %t12) %t14 = load ptr, ptr %a1 %t15 = call %S.lexer.Token @finch.parser.cur(ptr %t14) %t16 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t15) - store { ptr, i64, i64 } { ptr @.str.720, i64 11, i64 0 }, ptr %a18 + 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.721, i64 37, i64 0 }, ptr %a23 + 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) @@ -15373,37 +15428,37 @@ entry: %a174 = alloca %S.ast.Program, align 16 store ptr %p0, ptr %a1 store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1290 -while.cond1290: + br label %while.cond1297 +while.cond1297: %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.726, 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.body1298, label %while.end1299 +while.body1298: %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.727, i64 6, i64 0 }) + br i1 %t7, label %then1300, label %else1301 +then1300: %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.728, i64 6, i64 0 }) + br i1 %t12, label %then1303, label %else1304 +then1303: %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 %panic1306, label %ok1307 +panic1306: + call void @finch_panic(ptr @.str.729, i64 233, ptr @.str.730) unreachable -ok1300: +ok1307: %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.731, 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,7 +15470,7 @@ ok1300: 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 + 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 @@ -15448,18 +15503,18 @@ ok1300: %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: + br label %endif1305 +else1304: %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.at(ptr %t59, { ptr, i64, i64 } { ptr @.str.729, i64 5, i64 0 }) + %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 %then1301, label %endif1303 -then1301: + 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.730, i64 51, i64 0 }) - br label %endif1303 -endif1303: + 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 @@ -15475,19 +15530,19 @@ endif1303: %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: + 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.731, i64 4, i64 0 }) - br i1 %t77, label %then1304, label %else1305 -then1304: + %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.732, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.733, i64 42, i64 0 }) + %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) @@ -15495,89 +15550,89 @@ then1304: 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 + 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.from1307 -logic.from1307: - br i1 %t93, label %logic.end1309, label %logic.rhs1308 -logic.rhs1308: + 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.737, i64 2, i64 0 }, ptr %a97 + 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.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.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 %t116, label %logic.end1320, label %logic.rhs1319 + br i1 %t100, 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 + %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: - %t123 = phi i1 [ true, %logic.from1318 ], [ %t122, %logic.rend1321 ] + %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 %t123, label %logic.end1324, label %logic.rhs1323 + 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.745, i64 1, i64 0 }, ptr %a127 + 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.rend1325 -logic.rend1325: + 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: - %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: + %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.746, i64 65, i64 0 }) - br label %endif1329 -endif1329: + 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 @@ -15591,12 +15646,12 @@ endif1329: %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: + br label %endif1313 +else1312: %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: + %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 @@ -15608,12 +15663,12 @@ then1330: %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: + br label %endif1339 +else1338: %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: + %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 @@ -15625,8 +15680,8 @@ then1333: %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: + br label %endif1342 +else1341: %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 %t166 = load ptr, ptr %a1 @@ -15638,16 +15693,16 @@ 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: + 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) @@ -15682,12 +15737,12 @@ entry: %a86 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.749, i64 4, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.753, 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 }) + %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.752, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.753, i64 12, i64 0 }) + %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) @@ -15695,29 +15750,29 @@ entry: %t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t12, ptr %t13 %t14 = load ptr, ptr %a1 - %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.755, i64 3, i64 0 }) - br label %while.cond1336 -while.cond1336: + %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.756, i64 1, i64 0 }) + %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.body1337, label %while.end1338 -while.body1337: + 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.757, i64 3, i64 0 }) - br i1 %t20, label %then1339, label %endif1341 -then1339: + %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: %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: + 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: %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 }) + %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 %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 }) + %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) @@ -15725,20 +15780,20 @@ endif1341: %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 + %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.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: + %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.766, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.767, i64 30, i64 0 }) + %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) @@ -15749,8 +15804,8 @@ endif1347: %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: + 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 @@ -15765,40 +15820,40 @@ endif1344: 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 }) + %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 %then1348, label %endif1350 -then1348: + br i1 %t63, label %then1355, label %endif1357 +then1355: %t64 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t64) - br label %endif1350 -endif1350: - br label %while.cond1336 -while.end1338: + 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 %then1351, label %endif1353 -then1351: + 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.769, i64 9, i64 0 }, ptr %a77 + 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.770, i64 16, i64 0 }, ptr %a82 + 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 %endif1353 -endif1353: + 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) @@ -15823,13 +15878,13 @@ entry: store ptr %p0, ptr %a1 store i1 %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.771, i64 5, i64 0 }) + %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.775, 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 }) + %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 @@ -15842,61 +15897,61 @@ entry: store %S.ast.Node %t13, ptr %t17 store i64 %t15, ptr %t11 %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 }) + %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 %panic1354, label %ok1355 -panic1354: - call void @finch_panic(ptr @.str.776, i64 300, ptr @.str.777) + br i1 %t21, label %panic1361, label %ok1362 +panic1361: + call void @finch_panic(ptr @.str.780, i64 300, ptr @.str.781) unreachable -ok1355: +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 %panic1356, label %ok1357 -panic1356: - call void @finch_panic(ptr @.str.778, i64 301, ptr @.str.779) + br i1 %t26, label %panic1363, label %ok1364 +panic1363: + call void @finch_panic(ptr @.str.782, i64 301, ptr @.str.783) unreachable -ok1357: +ok1364: %t27 = getelementptr inbounds %S.parser.Parser, ptr %t25, i32 0, i32 2 store i64 0, ptr %t27 - br label %while.cond1358 -while.cond1358: + br label %while.cond1365 +while.cond1365: %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) + %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.body1359, label %while.end1360 -while.body1359: + 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.781, i64 3, i64 0 }) - br i1 %t32, label %then1361, label %endif1363 -then1361: + %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: %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: + 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: %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 }) + %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 %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.788, i64 8, i64 0 }) store %S.ast.Node %t40, ptr %a41 %t42 = load ptr, ptr %a1 - %t43 = call i1 @finch.parser.accept(ptr %t42, { ptr, i64, i64 } { ptr @.str.785, i64 4, i64 0 }) - br i1 %t43, label %then1364, label %else1365 -then1364: + %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 %endif1366 -else1365: - br label %while.cond1367 -while.cond1367: - br label %while.body1368 -while.body1368: + 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 @@ -15909,16 +15964,16 @@ while.body1368: 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 }) + %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 %then1370, label %endif1372 -then1370: - br label %while.end1369 -endif1372: - br label %while.cond1367 -while.end1369: - br label %endif1366 -endif1366: + 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 @@ -15933,22 +15988,22 @@ endif1366: 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 }) + %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.789, i64 1, i64 0 }) - br label %logic.from1373 -logic.from1373: - br i1 %t69, label %logic.rhs1374, label %logic.end1375 -logic.rhs1374: + %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.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: + 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 @@ -15960,11 +16015,11 @@ then1377: %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: + br label %endif1386 +else1385: %t81 = load i1, ptr %a2 - br i1 %t81, label %then1380, label %else1381 -then1380: + 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 @@ -15976,8 +16031,8 @@ then1380: %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: + 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 @@ -15989,10 +16044,10 @@ else1381: %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: + 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 @@ -16007,24 +16062,24 @@ endif1379: 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 }) + %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 %then1383, label %endif1385 -then1383: + br i1 %t110, label %then1390, label %endif1392 +then1390: %t111 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t111) - br label %endif1385 -endif1385: - br label %while.cond1358 -while.end1360: + 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 %panic1386, label %ok1387 -panic1386: - call void @finch_panic(ptr @.str.791, i64 332, ptr @.str.792) + br i1 %t114, label %panic1393, label %ok1394 +panic1393: + call void @finch_panic(ptr @.str.795, i64 332, ptr @.str.796) unreachable -ok1387: +ok1394: %t115 = getelementptr inbounds %S.parser.Parser, ptr %t113, i32 0, i32 2 store i64 %t112, ptr %t115 %t116 = load ptr, ptr %a1 @@ -16033,14 +16088,14 @@ ok1387: %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: + 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.793, i64 30, i64 0 }) - br label %endif1390 -endif1390: + 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) @@ -16059,14 +16114,14 @@ entry: store ptr %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.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: + %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.796, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.797, i64 29, i64 0 }) + %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) @@ -16079,16 +16134,16 @@ while.body1392: 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 }) + %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 %then1394, label %endif1396 -then1394: - br label %while.end1393 -endif1396: - br label %while.cond1391 -while.end1393: + 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.799, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.800, i64 29, i64 0 }) + %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) @@ -16117,12 +16172,12 @@ entry: %a84 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.801, i64 6, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.805, 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 }) + %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.804, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.805, i64 13, i64 0 }) + %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) @@ -16130,65 +16185,65 @@ entry: %t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t12, ptr %t13 %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.806, i64 1, i64 0 }) - br i1 %t15, label %then1397, label %endif1399 -then1397: + %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 %endif1399 -endif1399: + br label %endif1406 +endif1406: %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: + %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.809, i64 1, i64 0 }) + %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.body1401, label %while.end1402 -while.body1401: + 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.810, i64 3, i64 0 }) - br i1 %t25, label %then1403, label %endif1405 -then1403: + %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.811, i64 38, i64 0 }) - br label %endif1405 -endif1405: + 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.812, i64 5, i64 0 }) + %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 %then1406, label %endif1408 -then1406: + 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.813, i64 11, i64 0 }, ptr %a42 + 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.814, i64 28, i64 0 }, ptr %a47 + 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 %endif1408 -endif1408: + 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.815, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.816, i64 12, i64 0 }) + %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) @@ -16196,9 +16251,9 @@ endif1408: %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: + %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 @@ -16210,8 +16265,8 @@ then1409: %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: + 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 @@ -16227,8 +16282,8 @@ endif1411: store i64 %t76, ptr %t70 %t79 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t79) - br label %while.cond1400 -while.end1402: + 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 @@ -16267,18 +16322,18 @@ entry: %a154 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.818, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.822, 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.823, 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.824, i64 5, i64 0 }) + br label %logic.from1419 +logic.from1419: + br i1 %t9, label %logic.rhs1420, label %logic.end1421 +logic.rhs1420: %t10 = load ptr, ptr %a1 %t11 = call %S.lexer.Token @finch.parser.cur(ptr %t10) %t12 = extractvalue %S.lexer.Token %t11, 1 @@ -16286,23 +16341,23 @@ logic.rhs1413: 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: + 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.821, i64 68, i64 0 }) - br label %endif1418 -endif1418: + 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: %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 }) + %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.824, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.825, i64 15, i64 0 }) + %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) @@ -16310,19 +16365,19 @@ endif1418: %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: + %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 %endif1421 -endif1421: + br label %endif1428 +endif1428: %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: + %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 @@ -16331,46 +16386,46 @@ then1422: %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 }) + %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 %endif1424 -endif1424: + br label %endif1431 +endif1431: %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 }) + %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 %panic1425, label %ok1426 -panic1425: - call void @finch_panic(ptr @.str.832, i64 398, ptr @.str.833) + br i1 %t53, label %panic1432, label %ok1433 +panic1432: + call void @finch_panic(ptr @.str.836, i64 398, ptr @.str.837) unreachable -ok1426: +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.834, i64 1, i64 0 }) + %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 %then1427, label %endif1429 -then1427: - br label %while.cond1430 -while.cond1430: - br label %while.body1431 -while.body1431: + 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.835, i64 5, i64 0 }) + %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.836, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 16, i64 0 }) + %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) @@ -16391,91 +16446,91 @@ while.body1431: store %S.ast.Node %t78, ptr %t82 store i64 %t80, ptr %t74 %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.accept(ptr %t83, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) + %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 %then1433, label %endif1435 -then1433: - br label %while.end1432 -endif1435: - br label %while.cond1430 -while.end1432: - br label %endif1429 -endif1429: + 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 %panic1436, label %ok1437 -panic1436: - call void @finch_panic(ptr @.str.839, i64 410, ptr @.str.840) + br i1 %t87, label %panic1443, label %ok1444 +panic1443: + call void @finch_panic(ptr @.str.843, i64 410, ptr @.str.844) unreachable -ok1437: +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.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 }) + %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.844, i64 2, i64 0 }) - br i1 %t96, label %then1438, label %endif1440 -then1438: + %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.845, i64 1, i64 0 }) + %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 %then1441, label %endif1443 -then1441: + 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 %endif1443 -endif1443: + br label %endif1450 +endif1450: %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) + %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.from1444 -logic.from1444: - br i1 %t108, label %logic.rhs1445, label %logic.end1446 -logic.rhs1445: + 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.847, i64 4, i64 0 }, ptr %a113 + 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.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: + 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.848, i64 11, i64 0 }, ptr %a124 + 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.849, i64 61, i64 0 }, ptr %a129 + 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 %endif1450 -endif1450: - br label %endif1440 -endif1440: + 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 @@ -16495,11 +16550,11 @@ endif1440: %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) + br i1 %t146, label %range1458, label %inrange1459 +range1458: + call void @finch_panic_index(ptr @.str.854, i64 423, i64 %t143, i64 %t145) unreachable -inrange1452: +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 @@ -16522,46 +16577,46 @@ entry: %a44 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.851, i64 5, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.855, 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 }) + %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 %panic1453, label %ok1454 -panic1453: - call void @finch_panic(ptr @.str.854, i64 432, ptr @.str.855) + br i1 %t8, label %panic1460, label %ok1461 +panic1460: + call void @finch_panic(ptr @.str.858, i64 432, ptr @.str.859) unreachable -ok1454: +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 %panic1455, label %ok1456 -panic1455: - call void @finch_panic(ptr @.str.856, i64 433, ptr @.str.857) + br i1 %t13, label %panic1462, label %ok1463 +panic1462: + call void @finch_panic(ptr @.str.860, i64 433, ptr @.str.861) unreachable -ok1456: +ok1463: %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 2 store i64 0, ptr %t14 - br label %while.cond1457 -while.cond1457: + br label %while.cond1464 +while.cond1464: %t15 = load ptr, ptr %a1 - %t16 = call i1 @finch.parser.at(ptr %t15, { ptr, i64, i64 } { ptr @.str.858, i64 1, i64 0 }) + %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.body1458, label %while.end1459 -while.body1458: + 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.859, i64 3, i64 0 }) - br i1 %t19, label %then1460, label %endif1462 -then1460: + %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 %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: + 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 @@ -16575,16 +16630,16 @@ endif1462: store i64 %t28, ptr %t24 %t31 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t31) - br label %while.cond1457 -while.end1459: + br label %while.cond1464 +while.end1466: %t32 = load i64, ptr %a11 %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) + br i1 %t34, label %panic1470, label %ok1471 +panic1470: + call void @finch_panic(ptr @.str.865, i64 441, ptr @.str.866) unreachable -ok1464: +ok1471: %t35 = getelementptr inbounds %S.parser.Parser, ptr %t33, i32 0, i32 2 store i64 %t32, ptr %t35 %t36 = load ptr, ptr %a1 @@ -16691,24 +16746,24 @@ entry: store { ptr, i64, i64 } %t3, ptr %a4 %t5 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.863, i64 2, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.867, 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 %then1472, label %endif1474 +then1472: %t10 = load ptr, ptr %a1 %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) ret %S.ast.Node %t11 -endif1467: +endif1474: %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.868, 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 %then1475, label %endif1477 +then1475: %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.869, 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) @@ -16736,21 +16791,21 @@ then1468: store i64 %t35, ptr %t31 %t38 = load %S.ast.Node, ptr %a19 ret %S.ast.Node %t38 -endif1470: +endif1477: %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 + 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 %then1471, label %endif1473 -then1471: + 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.867, i64 3, i64 0 }) + %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.868, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.869, i64 20, i64 0 }) + %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) @@ -16758,21 +16813,21 @@ then1471: %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: + %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.871, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.872, i64 27, i64 0 }) + %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 %endif1476 -endif1476: + br label %endif1483 +endif1483: %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 }) + %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 @@ -16785,21 +16840,21 @@ endif1476: 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: + %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 %then1480, label %endif1482 -then1480: + 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.876, i64 55, i64 0 }) - br label %endif1482 -endif1482: + 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 @@ -16811,12 +16866,12 @@ endif1482: %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: + br label %endif1486 +else1485: %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: + 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 @@ -16830,48 +16885,48 @@ endif1479: store i64 %t98, ptr %t94 %t101 = load %S.ast.Node, ptr %a46 ret %S.ast.Node %t101 -endif1473: +endif1480: %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 + 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 %then1483, label %endif1485 -then1483: + br i1 %t106, label %then1490, label %endif1492 +then1490: %t107 = load ptr, ptr %a1 %t108 = call %S.ast.Node @finch.parser.parseMatch(ptr %t107, i1 false) ret %S.ast.Node %t108 -endif1485: +endif1492: %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 + 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 %then1486, label %endif1488 -then1486: + 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.880, i64 6, i64 0 }) + %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) %t119 = load ptr, ptr %a1 - %t120 = call i1 @finch.parser.at(ptr %t119, { ptr, i64, i64 } { ptr @.str.881, i64 1, i64 0 }) + %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.from1489 -logic.from1489: - br i1 %t121, label %logic.rhs1490, label %logic.end1491 -logic.rhs1490: + 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.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: + 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 %t129 = load ptr, ptr %a1 @@ -16883,32 +16938,32 @@ then1493: %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: + br label %endif1502 +endif1502: %t135 = load %S.ast.Node, ptr %a116 ret %S.ast.Node %t135 -endif1488: +endif1495: %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 + 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.from1496 -logic.from1496: - br i1 %t140, label %logic.end1498, label %logic.rhs1497 -logic.rhs1497: + 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.883, i64 8, i64 0 }, ptr %a143 + 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.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: + 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) @@ -16917,40 +16972,40 @@ then1500: %t152 = call %S.lexer.Token @finch.parser.next(ptr %t151) %t153 = load %S.ast.Node, ptr %a150 ret %S.ast.Node %t153 -endif1502: +endif1509: %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 + 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 %then1503, label %endif1505 -then1503: + 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 -endif1505: +endif1512: %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 + 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 %then1506, label %endif1508 -then1506: + 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.886, i64 5, i64 0 }) + %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.887, i64 5, i64 0 }) - br i1 %t172, label %then1509, label %endif1511 -then1509: + %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 %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: + 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 @@ -16964,77 +17019,77 @@ endif1511: store i64 %t181, ptr %t177 %t184 = load %S.ast.Node, ptr %a168 ret %S.ast.Node %t184 -endif1508: +endif1515: %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 + 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.from1512 -logic.from1512: - br i1 %t189, label %logic.end1514, label %logic.rhs1513 -logic.rhs1513: + 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.890, i64 6, i64 0 }, ptr %a192 + 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.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: + 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.891, i64 6, i64 0 }, ptr %a198 + 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.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: + 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: %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.896, i64 4, i64 0 }, ptr %a204 %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) %t206 = icmp ne i32 %t205, 0 - br label %logic.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: + 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.893, i64 1, i64 0 }, ptr %a213 + 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.894, i64 48, i64 0 }, ptr %a218 + 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 %endif1526 -endif1526: + br label %endif1533 +endif1533: %t220 = load ptr, ptr %a1 %t221 = call i1 @finch.parser.atDeclaration(ptr %t220) - br i1 %t221, label %then1527, label %endif1529 -then1527: + 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.895, i64 4, i64 0 }) + %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 @@ -17043,7 +17098,7 @@ then1527: %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 }) + %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) @@ -17051,9 +17106,9 @@ then1527: %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: + %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 %t240 = load ptr, ptr %a1 @@ -17065,32 +17120,32 @@ then1530: %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: + br label %endif1539 +endif1539: %t246 = load %S.ast.Node, ptr %a224 ret %S.ast.Node %t246 -endif1529: +endif1536: %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: + %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.900, i64 2, i64 0 }, ptr %a252 + 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.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: + 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.901, i64 4, i64 0 }) + %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) @@ -17115,7 +17170,7 @@ then1537: store i64 %t273, ptr %t269 %t276 = load %S.ast.Node, ptr %a258 ret %S.ast.Node %t276 -endif1539: +endif1546: %t277 = load ptr, ptr %a1 %t278 = call %S.lexer.Token @finch.parser.cur(ptr %t277) store %S.lexer.Token %t278, ptr %a279 @@ -17125,17 +17180,17 @@ endif1539: %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 + 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.903, i64 2, i64 0 }, ptr %t286 + 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.904, i64 2, i64 0 }, ptr %t287 + 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.905, i64 2, i64 0 }, ptr %t288 + 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.906, i64 2, i64 0 }, ptr %t289 + 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.907, i64 2, i64 0 }, ptr %t290 + 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 @@ -17147,86 +17202,86 @@ endif1539: %t299 = load i64, ptr %t295 %t300 = load ptr, ptr %a294 store i64 0, ptr %a301 - br label %find.cond1540 -find.cond1540: + br label %find.cond1547 +find.cond1547: %t302 = load i64, ptr %a301 %t303 = icmp slt i64 %t302, %t299 - br i1 %t303, label %find.body1541, label %find.end1544 -find.body1541: + 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.hit1542, label %find.next1543 -find.hit1542: + br i1 %t309, label %find.hit1549, label %find.next1550 +find.hit1549: store i64 %t302, ptr %a298 - br label %find.end1544 -find.next1543: + br label %find.end1551 +find.next1550: %t310 = add i64 %t302, 1 store i64 %t310, ptr %a301 - br label %find.cond1540 -find.end1544: + br label %find.cond1547 +find.end1551: %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 + br i1 %t312, 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 + %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: - %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: + %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 + 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.910, i64 5, i64 0 }, ptr %a332 + 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.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: + 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.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 + 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 @@ -17235,11 +17290,11 @@ endif1562: %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) + br i1 %t346, label %panic1570, label %ok1571 +panic1570: + call void @finch_panic(ptr @.str.917, i64 536, ptr @.str.918) unreachable -ok1564: +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 @@ -17278,66 +17333,66 @@ ok1564: store i64 %t373, ptr %t369 %t376 = load %S.ast.Node, ptr %a350 ret %S.ast.Node %t376 -endif1551: +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.915, i64 4, i64 0 }, ptr %a380 + 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.from1565 -logic.from1565: - br i1 %t382, label %logic.rhs1566, label %logic.end1567 -logic.rhs1566: + 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 store { ptr, i64, i64 } %t384, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.916, i64 6, i64 0 }, ptr %a386 + 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.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: + 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.917, i64 3, i64 0 }, ptr %a393 + 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.rend1572 -logic.rend1572: - br label %logic.end1571 -logic.end1571: - %t396 = phi i1 [ false, %logic.from1569 ], [ %t395, %logic.rend1572 ] - br label %logic.from1573 -logic.from1573: - br i1 %t396, label %logic.rhs1574, label %logic.end1575 -logic.rhs1574: + 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.918, i64 2, i64 0 }, ptr %a400 + 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.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: + 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: %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 + 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 @@ -17346,11 +17401,11 @@ endif1579: %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) + br i1 %t414, label %panic1587, label %ok1588 +panic1587: + call void @finch_panic(ptr @.str.925, i64 545, ptr @.str.926) unreachable -ok1581: +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 @@ -17383,10 +17438,10 @@ entry: %a45 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.923, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.927, 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 }) + %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 @@ -17410,13 +17465,13 @@ entry: store %S.ast.Node %t18, ptr %t22 store i64 %t20, ptr %t16 %t23 = load ptr, ptr %a1 - %t24 = call i1 @finch.parser.accept(ptr %t23, { ptr, i64, i64 } { ptr @.str.926, i64 4, i64 0 }) - br i1 %t24, label %then1582, label %endif1584 -then1582: + %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.927, i64 2, i64 0 }) - br i1 %t26, label %then1585, label %else1586 -then1585: + %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 @@ -17428,8 +17483,8 @@ then1585: %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: + 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 @@ -17441,10 +17496,10 @@ else1586: %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: + 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) @@ -17494,231 +17549,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.932, 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 %then1595, label %endif1597 +then1595: ret i64 1 -endif1590: +endif1597: %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.933, 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 %then1598, label %endif1600 +then1598: ret i64 2 -endif1593: +endif1600: %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.934, 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.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.931, i64 2, i64 0 }, ptr %a19 + 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.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.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.932, i64 1, i64 0 }, ptr %a25 + 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.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.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.933, i64 2, i64 0 }, ptr %a31 + 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.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.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.934, i64 1, i64 0 }, ptr %a37 + 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.rend1609 -logic.rend1609: - br label %logic.end1608 -logic.end1608: - %t40 = phi i1 [ true, %logic.from1606 ], [ %t39, %logic.rend1609 ] - br label %logic.from1610 -logic.from1610: - br i1 %t40, label %logic.end1612, label %logic.rhs1611 -logic.rhs1611: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.rend1613 -logic.rend1613: - br label %logic.end1612 -logic.end1612: - %t46 = phi i1 [ true, %logic.from1610 ], [ %t45, %logic.rend1613 ] - br i1 %t46, label %then1614, label %endif1616 -then1614: - ret i64 3 -endif1616: - %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 - %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) - %t51 = icmp ne i32 %t50, 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 %t51, label %logic.end1619, label %logic.rhs1618 + br i1 %t40, label %logic.end1619, label %logic.rhs1618 logic.rhs1618: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.937, i64 1, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 + %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: - %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: + %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.938, i64 1, i64 0 }, ptr %a60 + 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.rend1624 -logic.rend1624: - br label %logic.end1623 -logic.end1623: - %t63 = phi i1 [ true, %logic.from1621 ], [ %t62, %logic.rend1624 ] - br label %logic.from1625 -logic.from1625: - br i1 %t63, label %logic.end1627, label %logic.rhs1626 -logic.rhs1626: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.939, i64 1, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp ne i32 %t67, 0 - br label %logic.rend1628 -logic.rend1628: - br label %logic.end1627 -logic.end1627: - %t69 = phi i1 [ true, %logic.from1625 ], [ %t68, %logic.rend1628 ] - br i1 %t69, label %then1629, label %endif1631 -then1629: - ret i64 4 -endif1631: - %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 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 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 %t74, label %logic.end1634, label %logic.rhs1633 + br i1 %t63, label %logic.end1634, label %logic.rhs1633 logic.rhs1633: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.941, i64 1, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 + %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: - %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: + %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.942, i64 1, i64 0 }, ptr %a83 + 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.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.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.943, i64 2, i64 0 }, ptr %a89 + 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.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.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.944, i64 2, i64 0 }, ptr %a95 + 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.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.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 +logic.rhs1656: %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.949, 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.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: ret i64 5 -endif1654: +endif1661: ret i64 0 } @@ -17740,28 +17795,28 @@ 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.from1662 +logic.from1662: + br i1 %t7, label %logic.end1664, label %logic.rhs1663 +logic.rhs1663: %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.950, 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.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: %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: +endif1668: %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 }) + %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) @@ -17779,9 +17834,9 @@ endif1661: 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: + %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 @@ -17795,8 +17850,8 @@ then1662: %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: + 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 @@ -17808,8 +17863,8 @@ else1663: %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: + 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) @@ -17835,39 +17890,39 @@ entry: 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 %then1672, label %endif1674 +then1672: %t5 = load ptr, ptr %a1 %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) ret %S.ast.Node %t6 -endif1667: +endif1674: %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.cond1675 +while.cond1675: %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.from1678 +logic.from1678: + br i1 %t13, label %logic.rhs1679, label %logic.end1680 +logic.rhs1679: %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: + 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.949, i64 6, i64 0 }) + %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) @@ -17908,8 +17963,8 @@ while.body1669: 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: + br label %while.cond1675 +while.end1677: %t54 = load %S.ast.Node, ptr %a11 store %S.ast.Node %t54, ptr %a55 call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) @@ -17926,11 +17981,11 @@ entry: %a33 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.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.954, i64 3, i64 0 }) + br i1 %t3, label %then1682, label %endif1684 +then1682: %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.955, 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) @@ -17947,35 +18002,35 @@ then1675: store i64 %t14, ptr %t10 %t17 = load %S.ast.Node, ptr %a6 ret %S.ast.Node %t17 -endif1677: +endif1684: %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: + %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.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: + %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.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: + %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.955, i64 5, i64 0 }) + %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) @@ -17998,7 +18053,7 @@ then1686: store i64 %t41, ptr %t37 %t44 = load %S.ast.Node, ptr %a28 ret %S.ast.Node %t44 -endif1688: +endif1695: %t45 = load ptr, ptr %a1 %t46 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t45) ret %S.ast.Node %t46 @@ -18018,50 +18073,50 @@ entry: store ptr %p0, ptr %a1 store ptr %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.956, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.957, i64 3, i64 0 }) + %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 %panic1689, label %ok1690 -panic1689: - call void @finch_panic(ptr @.str.958, i64 638, ptr @.str.959) + br i1 %t6, label %panic1696, label %ok1697 +panic1696: + call void @finch_panic(ptr @.str.962, i64 638, ptr @.str.963) unreachable -ok1690: +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.960, i64 1, i64 0 }) + %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 %then1691, label %endif1693 -then1691: - br label %while.cond1694 -while.cond1694: + 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.961, i64 1, i64 0 }) + %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.body1695, label %while.end1696 -while.body1695: - store { ptr, i64, i64 } { ptr @.str.962, i64 0, i64 0 }, ptr %a16 + 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.963, i64 5, i64 0 }) - br label %logic.from1697 -logic.from1697: - br i1 %t18, label %logic.rhs1698, label %logic.end1699 -logic.rhs1698: + %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.964, i64 1, i64 0 }, ptr %a22 + 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.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: + 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 @@ -18071,15 +18126,15 @@ then1701: 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: + br label %endif1710 +endif1710: %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) + br i1 %t35, label %panic1711, label %ok1712 +panic1711: + call void @finch_panic(ptr @.str.969, i64 646, ptr @.str.970) unreachable -ok1705: +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 @@ -18095,11 +18150,11 @@ ok1705: 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) + br i1 %t47, label %panic1713, label %ok1714 +panic1713: + call void @finch_panic(ptr @.str.971, i64 647, ptr @.str.972) unreachable -ok1707: +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 @@ -18112,29 +18167,29 @@ ok1707: 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.969, i64 1, i64 0 }) + %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 %then1708, label %endif1710 -then1708: - br label %while.end1696 -endif1710: - br label %while.cond1694 -while.end1696: - br label %endif1693 -endif1693: + 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 %panic1711, label %ok1712 -panic1711: - call void @finch_panic(ptr @.str.970, i64 653, ptr @.str.971) + br i1 %t60, label %panic1718, label %ok1719 +panic1718: + call void @finch_panic(ptr @.str.974, i64 653, ptr @.str.975) unreachable -ok1712: +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.972, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.973, i64 3, i64 0 }) + %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 }) ret void } @@ -18162,23 +18217,23 @@ entry: %t2 = load ptr, ptr %a1 %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) store %S.ast.Node %t3, ptr %a4 - br label %while.cond1713 -while.cond1713: + br label %while.cond1720 +while.cond1720: %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.body1721, label %while.end1722 +while.body1721: %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.978, i64 1, i64 0 }) + br i1 %t8, label %then1723, label %else1724 +then1723: %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.979, 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 }) + %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) @@ -18199,51 +18254,51 @@ then1716: 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: + %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.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: + 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.979, i64 6, i64 0 }, ptr %t38 + 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 %endif1725 -endif1725: + 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 %endif1718 -else1717: + br label %endif1725 +else1724: %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: + %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: %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 }) + %t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }) store %S.ast.Node %t47, ptr %a48 %t49 = load ptr, ptr %a1 %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic1729, label %ok1730 -panic1729: - call void @finch_panic(ptr @.str.982, i64 673, ptr @.str.983) + br i1 %t52, label %panic1736, label %ok1737 +panic1736: + call void @finch_panic(ptr @.str.986, i64 673, ptr @.str.987) unreachable -ok1730: +ok1737: %t53 = getelementptr inbounds %S.parser.Parser, ptr %t51, i32 0, i32 2 %t54 = load i64, ptr %t53 %t55 = add i64 %t54, 1 @@ -18274,34 +18329,34 @@ ok1730: 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) + br i1 %t75, label %panic1738, label %ok1739 +panic1738: + call void @finch_panic(ptr @.str.988, i64 676, ptr @.str.989) unreachable -ok1732: +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.986, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.987, i64 3, i64 0 }) + %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 %endif1728 -else1727: + 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 -endif1728: - br label %endif1718 -endif1718: - br label %while.cond1713 -while.end1715: +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) @@ -18385,7 +18440,7 @@ entry: %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) store %S.lexer.Token %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.988, i64 0, i64 0 }) + %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.992, 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 @@ -18395,39 +18450,39 @@ entry: store { ptr, i64, i64 } %t12, ptr %a13 %t14 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.989, i64 3, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.993, 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.from1740 +logic.from1740: + br i1 %t18, label %logic.end1742, label %logic.rhs1741 +logic.rhs1741: %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.994, 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.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: %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.995, 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.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: %t31 = load ptr, ptr %a1 %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) %t33 = load { ptr, i64, i64 }, ptr %a13 @@ -18448,18 +18503,18 @@ then1741: call void @finch.copy.S_ast_Node(ptr %a46, ptr %a45) %t47 = load %S.ast.Node, ptr %a46 ret %S.ast.Node %t47 -endif1743: +endif1750: %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 + 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 %then1744, label %endif1746 -then1744: + 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.993, i64 3, i64 0 }, ptr %t55 + 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 @@ -18472,32 +18527,32 @@ then1744: call void @finch.copy.S_ast_Node(ptr %a64, ptr %a63) %t65 = load %S.ast.Node, ptr %a64 ret %S.ast.Node %t65 -endif1746: +endif1753: %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 + 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.from1747 -logic.from1747: - br i1 %t70, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: + 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.995, i64 5, i64 0 }, ptr %a73 + 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.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: + 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.996, i64 4, i64 0 }, ptr %t79 + 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 @@ -18509,40 +18564,40 @@ then1751: call void @finch.copy.S_ast_Node(ptr %a87, ptr %a86) %t88 = load %S.ast.Node, ptr %a87 ret %S.ast.Node %t88 -endif1753: +endif1760: %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 + 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 %then1754, label %endif1756 -then1754: + 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.998, i64 4, i64 0 }, ptr %t96 + 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 -endif1756: +endif1763: %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 + 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 %then1757, label %endif1759 -then1757: + 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 %panic1760, label %ok1761 -panic1760: - call void @finch_panic(ptr @.str.1000, i64 715, ptr @.str.1001) + br i1 %t109, label %panic1767, label %ok1768 +panic1767: + call void @finch_panic(ptr @.str.1004, i64 715, ptr @.str.1005) unreachable -ok1761: +ok1768: %t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 2 %t111 = load i64, ptr %t110 %t112 = add i64 %t111, 1 @@ -18552,85 +18607,85 @@ ok1761: 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) + br i1 %t117, label %panic1769, label %ok1770 +panic1769: + call void @finch_panic(ptr @.str.1006, i64 717, ptr @.str.1007) unreachable -ok1763: +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.1004, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1005, i64 3, i64 0 }) + %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 -endif1759: +endif1766: %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 + 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 %then1764, label %endif1766 -then1764: + 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 -endif1766: +endif1773: %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 + 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 %then1767, label %endif1769 -then1767: + 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.1008, i64 5, i64 0 }, ptr %t138 + 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 %panic1770, label %ok1771 -panic1770: - call void @finch_panic(ptr @.str.1009, i64 727, ptr @.str.1010) + br i1 %t140, label %panic1777, label %ok1778 +panic1777: + call void @finch_panic(ptr @.str.1013, i64 727, ptr @.str.1014) unreachable -ok1771: +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 %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: + %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.1012, i64 1, i64 0 }, ptr %a149 + 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.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: + 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.1013, i64 3, i64 0 }, ptr %t155 - br label %endif1778 -endif1778: - br label %while.cond1779 -while.cond1779: + 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.1014, i64 1, i64 0 }) + %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.body1780, label %while.end1781 -while.body1780: + 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 @@ -18646,33 +18701,33 @@ while.body1780: %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: + br label %logic.from1789 +logic.from1789: + br i1 %t170, label %logic.rhs1790, label %logic.end1791 +logic.rhs1790: %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: + %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.1016, i64 3, i64 0 }, ptr %t174 - br label %endif1788 -endif1788: + 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.1017, i64 3, i64 0 }, ptr %a178 + 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 %then1789, label %endif1791 -then1789: + 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.1018, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1019, i64 41, i64 0 }) + %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 @@ -18684,43 +18739,43 @@ then1789: %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: + br label %endif1798 +endif1798: %t191 = load ptr, ptr %a1 - %t192 = call i1 @finch.parser.accept(ptr %t191, { ptr, i64, i64 } { ptr @.str.1020, i64 1, i64 0 }) + %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 %then1792, label %endif1794 -then1792: - br label %while.end1781 -endif1794: - br label %while.cond1779 -while.end1781: + 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 %panic1795, label %ok1796 -panic1795: - call void @finch_panic(ptr @.str.1021, i64 745, ptr @.str.1022) + br i1 %t195, label %panic1802, label %ok1803 +panic1802: + call void @finch_panic(ptr @.str.1025, i64 745, ptr @.str.1026) unreachable -ok1796: +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.1023, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1024, i64 3, i64 0 }) + %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 -endif1769: +endif1776: %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 + 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 %then1797, label %endif1799 -then1797: + 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 @@ -18731,72 +18786,72 @@ then1797: %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: + %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 %panic1803, label %ok1804 -panic1803: - call void @finch_panic(ptr @.str.1027, i64 752, ptr @.str.1028) + br i1 %t221, label %panic1810, label %ok1811 +panic1810: + call void @finch_panic(ptr @.str.1031, i64 752, ptr @.str.1032) unreachable -ok1804: +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 %panic1805, label %ok1806 -panic1805: - call void @finch_panic(ptr @.str.1029, i64 752, ptr @.str.1030) + br i1 %t224, label %panic1812, label %ok1813 +panic1812: + call void @finch_panic(ptr @.str.1033, i64 752, ptr @.str.1034) unreachable -ok1806: +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 %range1807, label %inrange1808 -range1807: - call void @finch_panic_index(ptr @.str.1031, i64 752, i64 %t227, i64 %t229) + br i1 %t230, label %range1814, label %inrange1815 +range1814: + call void @finch_panic_index(ptr @.str.1035, i64 752, i64 %t227, i64 %t229) unreachable -inrange1808: +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.1032, i64 5, i64 0 }, ptr %a236 + 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.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: + 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.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: + 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.1033, i64 5, i64 0 }, 0 + %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.cond1817 -while.cond1817: - br label %while.body1818 -while.body1818: + 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 @@ -18810,18 +18865,18 @@ while.body1818: 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 }) + %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 %then1820, label %endif1822 -then1820: - br label %while.end1819 -endif1822: - br label %while.cond1817 -while.end1819: + br i1 %t258, label %then1827, label %endif1829 +then1827: + br label %while.end1826 +endif1829: + br label %while.cond1824 +while.end1826: %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 }) + %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.1037, i64 4, i64 0 }, ptr %t261 + store { ptr, i64, i64 } { ptr @.str.1041, i64 4, i64 0 }, ptr %t261 %t262 = load ptr, ptr %a1 call void @finch.parser.parseArgs(ptr %t262, ptr %a7) %t263 = load %S.ast.Node, ptr %a7 @@ -18829,26 +18884,26 @@ while.end1819: call void @finch.copy.S_ast_Node(ptr %a265, ptr %a264) %t266 = load %S.ast.Node, ptr %a265 ret %S.ast.Node %t266 -endif1816: +endif1823: %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: + %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.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: + 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.1039, i64 4, i64 0 }, ptr %t274 + 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 @@ -18856,25 +18911,25 @@ then1827: call void @finch.copy.S_ast_Node(ptr %a278, ptr %a277) %t279 = load %S.ast.Node, ptr %a278 ret %S.ast.Node %t279 -endif1829: +endif1836: %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 + 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 -endif1799: +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.1041, i64 11, i64 0 }, ptr %a290 + 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.1042, i64 19, i64 0 }, ptr %a295 + 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) @@ -18935,18 +18990,18 @@ 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.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.1048, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1049, 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.1051, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1052, 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 + 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 @@ -19022,54 +19077,54 @@ 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 %panic1837, label %ok1838 +panic1837: + call void @finch_panic(ptr @.str.1056, i64 195, ptr @.str.1057) unreachable -ok1831: +ok1838: %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 %t12 = load i1, ptr %t11 %t13 = xor i1 %t12, true - br i1 %t13, label %then1832, label %endif1834 -then1832: + br i1 %t13, label %then1839, label %endif1841 +then1839: ret void -endif1834: +endif1841: %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 %panic1842, label %ok1843 +panic1842: + call void @finch_panic(ptr @.str.1058, i64 198, ptr @.str.1059) unreachable -ok1836: +ok1843: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 27 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic1837, label %ok1838 -panic1837: - call void @finch_panic(ptr @.str.1057, i64 198, ptr @.str.1058) + br i1 %t19, label %panic1844, label %ok1845 +panic1844: + call void @finch_panic(ptr @.str.1061, i64 198, ptr @.str.1062) unreachable -ok1838: +ok1845: %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 %range1846, label %inrange1847 +range1846: + call void @finch_panic_index(ptr @.str.1063, i64 198, i64 %t22, i64 %t24) unreachable -inrange1840: +inrange1847: %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.1060, 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.1064, 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 @@ -19081,7 +19136,7 @@ inrange1840: 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 + 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 @@ -19092,7 +19147,7 @@ inrange1840: 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 } { ptr @.str.1066, i64 1, i64 0 }, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 %t60 = load i64, ptr %a4 @@ -19103,7 +19158,7 @@ inrange1840: 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 + 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 @@ -19112,7 +19167,7 @@ inrange1840: call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) %t75 = load { ptr, i64, i64 }, ptr %a72 store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.1068, 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 @@ -19123,7 +19178,7 @@ inrange1840: call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1065, i64 1, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.1069, 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 @@ -19134,7 +19189,7 @@ inrange1840: 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 + 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 @@ -19218,29 +19273,29 @@ entry: %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.cond1848 +for.cond1848: %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.body1849, label %for.end1851 +for.body1849: %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 %range1852, label %inrange1853 +range1852: + call void @finch_panic_index(ptr @.str.1071, i64 205, i64 %t11, i64 %t13) unreachable -inrange1846: +inrange1853: %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.1072, 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 @@ -19248,11 +19303,11 @@ inrange1846: %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) + br i1 %t27, label %range1854, label %inrange1855 +range1854: + call void @finch_panic_index(ptr @.str.1073, i64 205, i64 %t24, i64 %t26) unreachable -inrange1848: +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 @@ -19267,13 +19322,13 @@ inrange1848: %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: + br label %for.step1850 +for.step1850: %t39 = load i64, ptr %a6 %t40 = add i64 %t39, 1 store i64 %t40, ptr %a6 - br label %for.cond1841 -for.end1844: + 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 @@ -19284,12 +19339,12 @@ for.end1844: %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: + 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.1070, i64 1, i64 0 }, ptr %a55 + 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 @@ -19299,19 +19354,19 @@ then1849: 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: + br label %endif1858 +endif1858: %t63 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1071, i64 3, i64 0 }, ptr %a65 + 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.1072, i64 1, i64 0 }, ptr %a70 + 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.1073, i64 2, i64 0 }, ptr %a73 + 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 @@ -19319,34 +19374,34 @@ endif1851: 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 + 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 %then1852, label %else1853 -then1852: + 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.1075, i64 4, i64 0 }, ptr %a91 + 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 %then1855, label %else1856 -then1855: + 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.1076, i64 5, i64 0 }, ptr %a97 + 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 %endif1857 -else1856: + br label %endif1864 +else1863: %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 + 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 @@ -19357,26 +19412,26 @@ else1856: call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) %t110 = load { ptr, i64, i64 }, ptr %a107 store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1078, i64 1, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.1082, i64 1, i64 0 }, ptr %a113 call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) %t114 = load { ptr, i64, i64 }, ptr %a111 store { ptr, i64, i64 } %t114, ptr %a84 - br label %endif1857 -endif1857: - br label %endif1854 -else1853: + 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.1079, i64 4, i64 0 }, ptr %a119 + 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 %then1858, label %endif1860 -then1858: + 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.1080, i64 4, i64 0 }, ptr %a125 + 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 @@ -19387,10 +19442,10 @@ then1858: 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: + 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) @@ -19425,53 +19480,53 @@ entry: 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 %panic1868, label %ok1869 +panic1868: + call void @finch_panic(ptr @.str.1085, i64 226, ptr @.str.1086) unreachable -ok1862: +ok1869: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then1863, label %endif1865 -then1863: + br i1 %t8, label %then1870, label %endif1872 +then1870: ret void -endif1865: +endif1872: %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.1087, 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 %then1873, label %endif1875 +then1873: %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 %endif1875 +endif1875: %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 %panic1876, label %ok1877 +panic1876: + call void @finch_panic(ptr @.str.1088, i64 233, ptr @.str.1089) unreachable -ok1870: +ok1877: %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 %range1878, label %inrange1879 +range1878: + call void @finch_panic_index(ptr @.str.1090, i64 233, i64 %t25, i64 %t27) unreachable -inrange1872: +inrange1879: %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 @@ -19480,11 +19535,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 %range1880, label %inrange1881 +range1880: + call void @finch_panic_index(ptr @.str.1091, i64 233, i64 %t33, i64 %t35) unreachable -inrange1874: +inrange1881: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -19502,29 +19557,29 @@ 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.from1882 +logic.from1882: + br i1 %t53, label %logic.rhs1883, label %logic.end1884 +logic.rhs1883: %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.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: %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 %t60 = load { ptr, i64, i64 }, ptr %t59 store { ptr, i64, i64 } %t60, ptr %a61 call void @finch_str_copy(ptr %a62, ptr %a61) %t63 = load { ptr, i64, i64 }, ptr %a62 store { ptr, i64, i64 } %t63, ptr %a49 - br label %endif1881 -endif1881: + br label %endif1888 +endif1888: %t64 = load ptr, ptr %a1 %t65 = load %S.ast.Node, ptr %a2 %t66 = load i64, ptr %a11 @@ -19532,32 +19587,32 @@ endif1881: %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 } { 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.1089, i64 4, i64 0 }, ptr %a77 + 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 %panic1882, label %ok1883 -panic1882: - call void @finch_panic(ptr @.str.1090, i64 238, ptr @.str.1091) + br i1 %t80, label %panic1889, label %ok1890 +panic1889: + call void @finch_panic(ptr @.str.1094, i64 238, ptr @.str.1095) unreachable -ok1883: +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 %range1884, label %inrange1885 -range1884: - call void @finch_panic_index(ptr @.str.1092, i64 238, i64 %t83, i64 %t85) + br i1 %t86, label %range1891, label %inrange1892 +range1891: + call void @finch_panic_index(ptr @.str.1096, i64 238, i64 %t83, i64 %t85) unreachable -inrange1885: +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 @@ -19947,29 +20002,29 @@ entry: 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.cond1893 +each.cond1893: %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.body1894, label %each.end1896 +each.body1894: %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 %panic1897, label %ok1898 +panic1897: + call void @finch_panic(ptr @.str.1097, i64 244, ptr @.str.1098) unreachable -ok1891: +ok1898: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 27 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 %t16 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1095, i64 3, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1099, 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 @@ -19980,30 +20035,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.step1895 +each.step1895: %t25 = load i64, ptr %a3 %t26 = add i64 %t25, 1 store i64 %t26, ptr %a3 - br label %each.cond1886 -each.end1889: + br label %each.cond1893 +each.end1896: %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 %panic1899, label %ok1900 +panic1899: + call void @finch_panic(ptr @.str.1100, i64 246, ptr @.str.1101) unreachable -ok1893: +ok1900: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 14 store i64 0, ptr %a30 - br label %each.cond1894 -each.cond1894: + br label %each.cond1901 +each.cond1901: %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.body1902, label %each.end1904 +each.body1902: %t35 = load ptr, ptr %t29 %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t33 %t37 = load %S.gen.FnSig, ptr %t36 @@ -20013,22 +20068,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 %panic1905, label %ok1906 +panic1905: + call void @finch_panic(ptr @.str.1102, i64 247, ptr @.str.1103) unreachable -ok1899: +ok1906: %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 %range1907, label %inrange1908 +range1907: + call void @finch_panic_index(ptr @.str.1104, i64 247, i64 %t46, i64 %t48) unreachable -inrange1901: +inrange1908: %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 @@ -20037,11 +20092,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 %range1909, label %inrange1910 +range1909: + call void @finch_panic_index(ptr @.str.1105, i64 247, i64 %t54, i64 %t56) unreachable -inrange1903: +inrange1910: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 %t60 = load %S.ast.Node, ptr %t59 @@ -20053,38 +20108,38 @@ 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 %then1911, label %endif1913 +then1911: + br label %each.step1903 +endif1913: 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.cond1914 +for.cond1914: %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.body1915, label %for.end1917 +for.body1915: %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 %range1918, label %inrange1919 +range1918: + call void @finch_panic_index(ptr @.str.1106, i64 253, i64 %t78, i64 %t80) unreachable -inrange1912: +inrange1919: %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.1107, 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 @@ -20092,11 +20147,11 @@ inrange1912: %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) + br i1 %t94, label %range1920, label %inrange1921 +range1920: + call void @finch_panic_index(ptr @.str.1108, i64 253, i64 %t91, i64 %t93) unreachable -inrange1914: +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 @@ -20111,30 +20166,30 @@ inrange1914: %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: + br label %for.step1916 +for.step1916: %t106 = load i64, ptr %a73 %t107 = add i64 %t106, 1 store i64 %t107, ptr %a73 - br label %for.cond1907 -for.end1910: + br label %for.cond1914 +for.end1917: %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) + br i1 %t109, label %panic1922, label %ok1923 +panic1922: + call void @finch_panic(ptr @.str.1109, i64 255, ptr @.str.1110) unreachable -ok1916: +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.1107, i64 3, i64 0 }, ptr %a115 + 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.1108, i64 1, i64 0 }, ptr %a120 + 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 @@ -20144,7 +20199,7 @@ ok1916: 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 + 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 @@ -20154,27 +20209,27 @@ ok1916: 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 + 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 %panic1917, label %ok1918 -panic1917: - call void @finch_panic(ptr @.str.1111, i64 255, ptr @.str.1112) + br i1 %t143, label %panic1924, label %ok1925 +panic1924: + call void @finch_panic(ptr @.str.1115, i64 255, ptr @.str.1116) unreachable -ok1918: +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 %range1919, label %inrange1920 -range1919: - call void @finch_panic_index(ptr @.str.1113, i64 255, i64 %t146, i64 %t148) + br i1 %t149, label %range1926, label %inrange1927 +range1926: + call void @finch_panic_index(ptr @.str.1117, i64 255, i64 %t146, i64 %t148) unreachable -inrange1920: +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 @@ -20183,7 +20238,7 @@ inrange1920: 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 + 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 @@ -20195,7 +20250,7 @@ inrange1920: 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 + 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 @@ -20207,7 +20262,7 @@ inrange1920: 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 + 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 @@ -20219,7 +20274,7 @@ inrange1920: 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 + 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 @@ -20230,11 +20285,11 @@ inrange1920: 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 } { ptr @.str.1122, i64 1, i64 0 }, ptr %a206 call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1119, i64 1, i64 0 }, ptr %a209 + 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 @@ -20248,30 +20303,30 @@ inrange1920: %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: + br label %each.step1903 +each.step1903: %t220 = load i64, ptr %a30 %t221 = add i64 %t220, 1 store i64 %t221, ptr %a30 - br label %each.cond1894 -each.end1897: + br label %each.cond1901 +each.end1904: %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) + br i1 %t223, label %panic1928, label %ok1929 +panic1928: + call void @finch_panic(ptr @.str.1124, i64 257, ptr @.str.1125) unreachable -ok1922: +ok1929: %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 16 store i64 0, ptr %a225 - br label %each.cond1923 -each.cond1923: + 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.body1924, label %each.end1926 -each.body1924: + 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 @@ -20281,28 +20336,28 @@ each.body1924: 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: + 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 %panic1930, label %ok1931 -panic1930: - call void @finch_panic(ptr @.str.1122, i64 261, ptr @.str.1123) + br i1 %t240, label %panic1937, label %ok1938 +panic1937: + call void @finch_panic(ptr @.str.1126, i64 261, ptr @.str.1127) unreachable -ok1931: +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 %range1932, label %inrange1933 -range1932: - call void @finch_panic_index(ptr @.str.1124, i64 261, i64 %t243, i64 %t245) + br i1 %t246, label %range1939, label %inrange1940 +range1939: + call void @finch_panic_index(ptr @.str.1128, i64 261, i64 %t243, i64 %t245) unreachable -inrange1933: +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 @@ -20311,11 +20366,11 @@ inrange1933: %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) + br i1 %t254, label %range1941, label %inrange1942 +range1941: + call void @finch_panic_index(ptr @.str.1129, i64 261, i64 %t251, i64 %t253) unreachable -inrange1935: +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 @@ -20325,21 +20380,21 @@ inrange1935: 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) + br i1 %t263, label %panic1943, label %ok1944 +panic1943: + call void @finch_panic(ptr @.str.1130, i64 262, ptr @.str.1131) unreachable -ok1937: +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.1128, i64 3, i64 0 }, ptr %a269 + 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.1129, i64 1, i64 0 }, ptr %a274 + 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 @@ -20349,7 +20404,7 @@ ok1937: 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 + 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 @@ -20359,27 +20414,27 @@ ok1937: 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 + store { ptr, i64, i64 } { ptr @.str.1135, 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) + br i1 %t297, label %panic1945, label %ok1946 +panic1945: + call void @finch_panic(ptr @.str.1136, i64 262, ptr @.str.1137) unreachable -ok1939: +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 %range1940, label %inrange1941 -range1940: - call void @finch_panic_index(ptr @.str.1134, i64 262, i64 %t300, i64 %t302) + br i1 %t303, label %range1947, label %inrange1948 +range1947: + call void @finch_panic_index(ptr @.str.1138, i64 262, i64 %t300, i64 %t302) unreachable -inrange1941: +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 @@ -20388,7 +20443,7 @@ inrange1941: 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 + 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 @@ -20400,7 +20455,7 @@ inrange1941: 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 + 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 @@ -20412,7 +20467,7 @@ inrange1941: 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 + 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 @@ -20424,22 +20479,22 @@ inrange1941: 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 + 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.1139, i64 3, i64 0 }, ptr %a354 + 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.1140, i64 1, i64 0 }, ptr %a359 + 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.1141, i64 2, i64 0 }, ptr %a363 + 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 @@ -20447,7 +20502,7 @@ inrange1941: 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 + 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) @@ -20456,7 +20511,7 @@ inrange1941: 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 + 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 @@ -20466,30 +20521,30 @@ inrange1941: %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: + br label %each.step1932 +each.step1932: %t387 = load i64, ptr %a225 %t388 = add i64 %t387, 1 store i64 %t388, ptr %a225 - br label %each.cond1923 -each.end1926: + br label %each.cond1930 +each.end1933: %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) + br i1 %t390, label %panic1949, label %ok1950 +panic1949: + call void @finch_panic(ptr @.str.1148, i64 264, ptr @.str.1149) unreachable -ok1943: +ok1950: %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 15 store i64 0, ptr %a392 - br label %each.cond1944 -each.cond1944: + 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.body1945, label %each.end1947 -each.body1945: + 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 @@ -20499,41 +20554,41 @@ each.body1945: 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: + 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.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: + 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 %panic1955, label %ok1956 -panic1955: - call void @finch_panic(ptr @.str.1146, i64 268, ptr @.str.1147) + br i1 %t412, label %panic1962, label %ok1963 +panic1962: + call void @finch_panic(ptr @.str.1150, i64 268, ptr @.str.1151) unreachable -ok1956: +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 %range1957, label %inrange1958 -range1957: - call void @finch_panic_index(ptr @.str.1148, i64 268, i64 %t415, i64 %t417) + br i1 %t418, label %range1964, label %inrange1965 +range1964: + call void @finch_panic_index(ptr @.str.1152, i64 268, i64 %t415, i64 %t417) unreachable -inrange1958: +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 @@ -20542,11 +20597,11 @@ inrange1958: %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) + br i1 %t426, label %range1966, label %inrange1967 +range1966: + call void @finch_panic_index(ptr @.str.1153, i64 268, i64 %t423, i64 %t425) unreachable -inrange1960: +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 @@ -20556,21 +20611,21 @@ inrange1960: 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) + br i1 %t435, label %panic1968, label %ok1969 +panic1968: + call void @finch_panic(ptr @.str.1154, i64 269, ptr @.str.1155) unreachable -ok1962: +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.1152, i64 3, i64 0 }, ptr %a441 + 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.1153, i64 1, i64 0 }, ptr %a446 + 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 @@ -20580,27 +20635,27 @@ ok1962: 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 + 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 %panic1963, label %ok1964 -panic1963: - call void @finch_panic(ptr @.str.1155, i64 269, ptr @.str.1156) + br i1 %t459, label %panic1970, label %ok1971 +panic1970: + call void @finch_panic(ptr @.str.1159, i64 269, ptr @.str.1160) unreachable -ok1964: +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 %range1965, label %inrange1966 -range1965: - call void @finch_panic_index(ptr @.str.1157, i64 269, i64 %t462, i64 %t464) + br i1 %t465, label %range1972, label %inrange1973 +range1972: + call void @finch_panic_index(ptr @.str.1161, i64 269, i64 %t462, i64 %t464) unreachable -inrange1966: +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 @@ -20609,7 +20664,7 @@ inrange1966: 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 + 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 @@ -20621,7 +20676,7 @@ inrange1966: 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 + 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 @@ -20643,29 +20698,29 @@ inrange1966: %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: + br label %for.cond1974 +for.cond1974: %t505 = load i64, ptr %a504 %t506 = icmp slt i64 %t505, %t503 - br i1 %t506, label %for.body1968, label %for.end1970 -for.body1968: + 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 %panic1971, label %ok1972 -panic1971: - call void @finch_panic(ptr @.str.1160, i64 271, ptr @.str.1161) + br i1 %t508, label %panic1978, label %ok1979 +panic1978: + call void @finch_panic(ptr @.str.1164, i64 271, ptr @.str.1165) unreachable -ok1972: +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.1162, i64 4, i64 0 }, ptr %a514 + 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.1163, i64 1, i64 0 }, ptr %a519 + 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 @@ -20675,7 +20730,7 @@ ok1972: 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 + 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 @@ -20683,11 +20738,11 @@ ok1972: %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) + br i1 %t535, label %range1980, label %inrange1981 +range1980: + call void @finch_panic_index(ptr @.str.1169, i64 271, i64 %t532, i64 %t534) unreachable -inrange1974: +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 @@ -20696,7 +20751,7 @@ inrange1974: 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 + 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 @@ -20704,11 +20759,11 @@ inrange1974: %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) + br i1 %t551, label %range1982, label %inrange1983 +range1982: + call void @finch_panic_index(ptr @.str.1171, i64 271, i64 %t548, i64 %t550) unreachable -inrange1976: +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 @@ -20724,66 +20779,66 @@ inrange1976: %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: + br label %for.step1976 +for.step1976: %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: + 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.cond1944 -each.end1947: + br label %each.cond1951 +each.end1954: %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) + br i1 %t569, label %panic1984, label %ok1985 +panic1984: + call void @finch_panic(ptr @.str.1172, i64 274, ptr @.str.1173) unreachable -ok1978: +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.cond1979 -for.cond1979: + br label %for.cond1986 +for.cond1986: %t574 = load i64, ptr %a573 %t575 = icmp slt i64 %t574, %t572 - br i1 %t575, label %for.body1980, label %for.end1982 -for.body1980: + 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 %panic1983, label %ok1984 -panic1983: - call void @finch_panic(ptr @.str.1170, i64 275, ptr @.str.1171) + br i1 %t577, label %panic1990, label %ok1991 +panic1990: + call void @finch_panic(ptr @.str.1174, i64 275, ptr @.str.1175) unreachable -ok1984: +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 %range1985, label %inrange1986 -range1985: - call void @finch_panic_index(ptr @.str.1172, i64 275, i64 %t579, i64 %t581) + br i1 %t582, label %range1992, label %inrange1993 +range1992: + call void @finch_panic_index(ptr @.str.1176, i64 275, i64 %t579, i64 %t581) unreachable -inrange1986: +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.cond1987 -each.cond1987: + 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.body1988, label %each.end1990 -each.body1988: + 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 @@ -20791,18 +20846,18 @@ each.body1988: 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 } { 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.cond1991 -each.cond1991: + 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.body1992, label %each.end1994 -each.body1992: + 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 @@ -20820,54 +20875,54 @@ each.body1992: %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: + br label %each.step2000 +each.step2000: %t620 = load i64, ptr %a601 %t621 = add i64 %t620, 1 store i64 %t621, ptr %a601 - br label %each.cond1991 -each.end1994: + br label %each.cond1998 +each.end2001: %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 + 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 %panic1995, label %ok1996 -panic1995: - call void @finch_panic(ptr @.str.1175, i64 282, ptr @.str.1176) + br i1 %t627, label %panic2002, label %ok2003 +panic2002: + call void @finch_panic(ptr @.str.1179, i64 282, ptr @.str.1180) unreachable -ok1996: +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 %panic1997, label %ok1998 -panic1997: - call void @finch_panic(ptr @.str.1178, i64 282, ptr @.str.1179) + br i1 %t631, label %panic2004, label %ok2005 +panic2004: + call void @finch_panic(ptr @.str.1182, i64 282, ptr @.str.1183) unreachable -ok1998: +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 %range1999, label %inrange2000 -range1999: - call void @finch_panic_index(ptr @.str.1180, i64 282, i64 %t633, i64 %t635) + br i1 %t636, label %range2006, label %inrange2007 +range2006: + call void @finch_panic_index(ptr @.str.1184, i64 282, i64 %t633, i64 %t635) unreachable -inrange2000: +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.1177, i64 3, i64 0 }, ptr %a642 + 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.1181, i64 1, i64 0 }, ptr %a647 + 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 @@ -20877,27 +20932,27 @@ inrange2000: 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 + 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 %panic2001, label %ok2002 -panic2001: - call void @finch_panic(ptr @.str.1183, i64 282, ptr @.str.1184) + br i1 %t660, label %panic2008, label %ok2009 +panic2008: + call void @finch_panic(ptr @.str.1187, i64 282, ptr @.str.1188) unreachable -ok2002: +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 %range2003, label %inrange2004 -range2003: - call void @finch_panic_index(ptr @.str.1185, i64 282, i64 %t663, i64 %t665) + br i1 %t666, label %range2010, label %inrange2011 +range2010: + call void @finch_panic_index(ptr @.str.1189, i64 282, i64 %t663, i64 %t665) unreachable -inrange2004: +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 @@ -20906,7 +20961,7 @@ inrange2004: 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 + 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 @@ -20918,7 +20973,7 @@ inrange2004: 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 + 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 @@ -20930,7 +20985,7 @@ inrange2004: 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 + 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 @@ -20945,20 +21000,20 @@ inrange2004: %t710 = getelementptr inbounds { ptr, i64, i64 }, ptr %t709, i64 %t707 store { ptr, i64, i64 } %t706, ptr %t710 store i64 %t708, ptr %t629 - br label %each.step1989 -each.step1989: + br label %each.step1996 +each.step1996: %t711 = load i64, ptr %a586 %t712 = add i64 %t711, 1 store i64 %t712, ptr %a586 - br label %each.cond1987 -each.end1990: - br label %for.step1981 -for.step1981: + 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.cond1979 -for.end1982: + br label %for.cond1986 +for.end1989: ret void } @@ -20997,79 +21052,79 @@ entry: 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 %panic2012, label %ok2013 +panic2012: + call void @finch_panic(ptr @.str.1193, i64 288, ptr @.str.1194) unreachable -ok2006: +ok2013: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 %t7 = load i1, ptr %t6 - br label %logic.from2007 -logic.from2007: - br i1 %t7, label %logic.rhs2008, label %logic.end2009 -logic.rhs2008: + br label %logic.from2014 +logic.from2014: + br i1 %t7, label %logic.rhs2015, label %logic.end2016 +logic.rhs2015: %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 %panic2017, label %ok2018 +panic2017: + call void @finch_panic(ptr @.str.1195, i64 288, ptr @.str.1196) unreachable -ok2011: +ok2018: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 27 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 %t12 = load i64, ptr %t11 %t13 = icmp sgt i64 %t12, 0 - br label %logic.rend2012 -logic.rend2012: - br label %logic.end2009 -logic.end2009: - %t14 = phi i1 [ false, %logic.from2007 ], [ %t13, %logic.rend2012 ] - br i1 %t14, label %then2013, label %endif2015 -then2013: + 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: %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 %panic2023, label %ok2024 +panic2023: + call void @finch_panic(ptr @.str.1197, i64 289, ptr @.str.1198) unreachable -ok2017: +ok2024: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 27 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1199, 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: + %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 %panic2018, label %ok2019 -panic2018: - call void @finch_panic(ptr @.str.1199, i64 291, ptr @.str.1200) + br i1 %t30, label %panic2025, label %ok2026 +panic2025: + call void @finch_panic(ptr @.str.1203, i64 291, ptr @.str.1204) unreachable -ok2019: +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 %range2020, label %inrange2021 -range2020: - call void @finch_panic_index(ptr @.str.1201, i64 291, i64 %t33, i64 %t35) + br i1 %t36, label %range2027, label %inrange2028 +range2027: + call void @finch_panic_index(ptr @.str.1205, i64 291, i64 %t33, i64 %t35) unreachable -inrange2021: +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.1202, i64 1, i64 0 }, ptr %a42 + 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 @@ -21081,7 +21136,7 @@ inrange2021: 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 + 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 @@ -21093,7 +21148,7 @@ inrange2021: 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 + store { ptr, i64, i64 } { ptr @.str.1208, i64 9, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 %t68 = load { ptr, i64, i64 }, ptr %a3 @@ -21103,11 +21158,11 @@ inrange2021: %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) + br i1 %t74, label %panic2029, label %ok2030 +panic2029: + call void @finch_panic(ptr @.str.1209, i64 291, ptr @.str.1210) unreachable -ok2023: +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 @@ -21118,9 +21173,9 @@ ok2023: %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) + %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) @@ -21151,46 +21206,46 @@ entry: 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 %panic2031, label %ok2032 +panic2031: + call void @finch_panic(ptr @.str.1214, i64 297, ptr @.str.1215) unreachable -ok2025: +ok2032: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 34 %t6 = load i64, ptr %t5 %t7 = icmp sge i64 %t6, 0 - br label %logic.from2026 -logic.from2026: - br i1 %t7, label %logic.rhs2027, label %logic.end2028 -logic.rhs2027: + br label %logic.from2033 +logic.from2033: + br i1 %t7, label %logic.rhs2034, label %logic.end2035 +logic.rhs2034: %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.1217, 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.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: %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 %panic2040, label %ok2041 +panic2040: + call void @finch_panic(ptr @.str.1218, i64 298, ptr @.str.1219) unreachable -ok2034: +ok2041: %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.1220, 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.1221, 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 @@ -21209,18 +21264,18 @@ ok2034: store { ptr, i64, i64 } %t35, ptr %t39 store i64 %t37, ptr %t18 ret void -endif2032: +endif2039: %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) + br i1 %t41, label %panic2042, label %ok2043 +panic2042: + call void @finch_panic(ptr @.str.1222, i64 301, ptr @.str.1223) unreachable -ok2036: +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.1220, i64 2, i64 0 }, ptr %a46 + 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 @@ -21244,27 +21299,27 @@ entry: 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 %panic2044, label %ok2045 +panic2044: + call void @finch_panic(ptr @.str.1225, i64 305, ptr @.str.1226) unreachable -ok2038: +ok2045: %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 %panic2046, label %ok2047 +panic2046: + call void @finch_panic(ptr @.str.1228, i64 306, ptr @.str.1229) unreachable -ok2040: +ok2047: %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.1227, 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 @@ -21283,11 +21338,11 @@ entry: 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 %panic2048, label %ok2049 +panic2048: + call void @finch_panic(ptr @.str.1230, i64 310, ptr @.str.1231) unreachable -ok2042: +ok2049: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 7 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 @@ -21295,11 +21350,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 %panic2050, label %ok2051 +panic2050: + call void @finch_panic(ptr @.str.1232, i64 311, ptr @.str.1233) unreachable -ok2044: +ok2051: %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) @@ -21322,16 +21377,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 %panic2052, label %ok2053 +panic2052: + call void @finch_panic(ptr @.str.1234, i64 315, ptr @.str.1235) unreachable -ok2046: +ok2053: %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.1236, 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 @@ -21343,11 +21398,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 %panic2054, label %ok2055 +panic2054: + call void @finch_panic(ptr @.str.1237, i64 316, ptr @.str.1238) unreachable -ok2048: +ok2055: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 store i1 false, ptr %t18 ret void @@ -21364,34 +21419,34 @@ entry: 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 %panic2056, label %ok2057 +panic2056: + call void @finch_panic(ptr @.str.1239, i64 320, ptr @.str.1240) unreachable -ok2050: +ok2057: %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 %then2058, label %endif2060 +then2058: %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.1241, 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) + br i1 %t15, label %panic2061, label %ok2062 +panic2061: + call void @finch_panic(ptr @.str.1242, i64 322, ptr @.str.1243) unreachable -ok2055: +ok2062: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9 store i1 true, ptr %t16 - br label %endif2053 -endif2053: + br label %endif2060 +endif2060: ret void } @@ -21422,12 +21477,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1240, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1244, 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.1245, 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 @@ -21436,7 +21491,7 @@ entry: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1242, i64 9, i64 0 }, ptr %a22 + 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 @@ -21447,11 +21502,11 @@ entry: call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28) %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2056, label %ok2057 -panic2056: - call void @finch_panic(ptr @.str.1243, i64 328, ptr @.str.1244) + br i1 %t30, label %panic2063, label %ok2064 +panic2063: + call void @finch_panic(ptr @.str.1247, i64 328, ptr @.str.1248) unreachable -ok2057: +ok2064: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9 store i1 true, ptr %t31 ret void @@ -21484,47 +21539,47 @@ entry: 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 %panic2065, label %ok2066 +panic2065: + call void @finch_panic(ptr @.str.1249, i64 332, ptr @.str.1250) unreachable -ok2059: +ok2066: %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 %panic2067, label %ok2068 +panic2067: + call void @finch_panic(ptr @.str.1252, i64 333, ptr @.str.1253) unreachable -ok2061: +ok2068: %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.1251, 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) + br i1 %t20, label %panic2069, label %ok2070 +panic2069: + call void @finch_panic(ptr @.str.1254, i64 334, ptr @.str.1255) unreachable -ok2063: +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.1252, i64 2, i64 0 }, ptr %a25 + 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.1253, i64 10, i64 0 }, ptr %a30 + 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 @@ -21533,7 +21588,7 @@ ok2063: 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 + 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 @@ -21579,7 +21634,7 @@ entry: %t7 = load ptr, ptr %a1 %t8 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1255, i64 8, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1259, 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 @@ -21588,7 +21643,7 @@ entry: call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1256, i64 6, i64 0 }, ptr %a20 + 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 @@ -21631,12 +21686,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1257, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1261, 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.1262, 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 @@ -21645,7 +21700,7 @@ entry: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1259, i64 6, i64 0 }, ptr %a22 + 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 @@ -21710,7 +21765,7 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1260, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1264, 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 @@ -21742,27 +21797,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.cond2071 +find.cond2071: %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.body2072, label %find.end2075 +find.body2072: %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.hit2073, label %find.next2074 +find.hit2073: store i64 %t9, ptr %a5 - br label %find.end2068 -find.next2067: + br label %find.end2075 +find.next2074: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond2064 -find.end2068: + br label %find.cond2071 +find.end2075: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 ret i1 %t19 @@ -21800,51 +21855,51 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1261, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1265, 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.from2076 +logic.from2076: + br i1 %t12, label %logic.end2078, label %logic.rhs2077 +logic.rhs2077: %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.1266, 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.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: %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.1267, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.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.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: %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.1268, i64 3, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend2080 -logic.rend2080: - br label %logic.end2079 -logic.end2079: - %t30 = phi i1 [ true, %logic.from2077 ], [ %t29, %logic.rend2080 ] + br label %logic.rend2087 +logic.rend2087: + br label %logic.end2086 +logic.end2086: + %t30 = phi i1 [ true, %logic.from2084 ], [ %t29, %logic.rend2087 ] ret i1 %t30 } @@ -21871,51 +21926,51 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1265, i64 2, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1269, 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.from2088 +logic.from2088: + br i1 %t12, label %logic.end2090, label %logic.rhs2089 +logic.rhs2089: %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.1270, 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.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: %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.1271, 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.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: %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.1272, 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.rend2099 +logic.rend2099: + br label %logic.end2098 +logic.end2098: + %t30 = phi i1 [ true, %logic.from2096 ], [ %t29, %logic.rend2099 ] ret i1 %t30 } @@ -21925,17 +21980,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.from2100 +logic.from2100: + br i1 %t3, label %logic.end2102, label %logic.rhs2101 +logic.rhs2101: %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.rend2103 +logic.rend2103: + br label %logic.end2102 +logic.end2102: + %t6 = phi i1 [ true, %logic.from2100 ], [ %t5, %logic.rend2103 ] ret i1 %t6 } @@ -21950,24 +22005,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.1273, 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.from2104 +logic.from2104: + br i1 %t7, label %logic.end2106, label %logic.rhs2105 +logic.rhs2105: %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.1274, 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.rend2107 +logic.rend2107: + br label %logic.end2106 +logic.end2106: + %t14 = phi i1 [ true, %logic.from2104 ], [ %t13, %logic.rend2107 ] ret i1 %t14 } @@ -21977,17 +22032,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.from2108 +logic.from2108: + br i1 %t3, label %logic.end2110, label %logic.rhs2109 +logic.rhs2109: %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.rend2111 +logic.rend2111: + br label %logic.end2110 +logic.end2110: + %t6 = phi i1 [ true, %logic.from2108 ], [ %t5, %logic.rend2111 ] ret i1 %t6 } @@ -22024,110 +22079,110 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1271, i64 4, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1275, 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 %then2112, label %endif2114 +then2112: ret i64 1 -endif2107: +endif2114: %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.1276, 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.from2115 +logic.from2115: + br i1 %t17, label %logic.end2117, label %logic.rhs2116 +logic.rhs2116: %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.1277, 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: - %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 - %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: - ret i64 8 -endif2118: - %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 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 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 %t34, label %logic.end2121, label %logic.rhs2120 + br i1 %t23, label %logic.end2121, label %logic.rhs2120 logic.rhs2120: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1276, i64 3, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 + %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 + %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: - %t40 = phi i1 [ true, %logic.from2119 ], [ %t39, %logic.rend2122 ] - br i1 %t40, label %then2123, label %endif2125 + %t29 = phi i1 [ true, %logic.from2119 ], [ %t28, %logic.rend2122 ] + br i1 %t29, label %then2123, label %endif2125 then2123: - ret i64 16 + ret i64 8 endif2125: - %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 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 + %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 + %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) + %t34 = icmp ne i32 %t33, 0 br label %logic.from2126 logic.from2126: - br i1 %t45, label %logic.end2128, label %logic.rhs2127 + br i1 %t34, label %logic.end2128, label %logic.rhs2127 logic.rhs2127: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1278, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 + %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 + %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: - %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: + %t40 = phi i1 [ true, %logic.from2126 ], [ %t39, %logic.rend2129 ] + br i1 %t40, label %then2130, label %endif2132 +then2130: + ret i64 16 +endif2132: + %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 + %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: + %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 + %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: %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.1283, 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.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: ret i64 32 -endif2136: +endif2143: ret i64 64 } @@ -22140,39 +22195,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.from2144 +logic.from2144: + br i1 %t5, label %logic.end2146, label %logic.rhs2145 +logic.rhs2145: %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: - ret i1 false -endif2143: - %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: - %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 + %t9 = phi i1 [ true, %logic.from2144 ], [ %t8, %logic.rend2147 ] + br i1 %t9, label %then2148, label %endif2150 then2148: ret i1 false endif2150: + %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: + %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: + ret i1 false +endif2157: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i64 @finch.gen.bitsOf(%S.ast.Type %t15) %t17 = load %S.ast.Type, ptr %a1 @@ -22196,33 +22251,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 %then2158, label %endif2160 +then2158: ret i1 false -endif2153: +endif2160: %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.1284, i64 427) store i64 %t9, ptr %a10 %t11 = load %S.ast.Type, ptr %a3 %t12 = call i64 @finch.gen.bitsOf(%S.ast.Type %t11) store i64 %t12, ptr %a13 %t14 = load i64, ptr %a10 %t15 = icmp slt i64 %t14, 0 - br i1 %t15, label %then2154, label %endif2156 -then2154: + br i1 %t15, label %then2161, label %endif2163 +then2161: %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 %then2164, label %endif2166 +then2164: ret i1 false -endif2159: +endif2166: %t18 = load i64, ptr %a13 %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2160, label %endif2162 -then2160: + br i1 %t19, label %then2167, label %endif2169 +then2167: ret i1 true -endif2162: +endif2169: %t20 = load i64, ptr %a10 %t21 = load i64, ptr %a13 %t22 = sub i64 %t21, 1 @@ -22230,28 +22285,28 @@ endif2162: %t24 = sub i64 0, %t23 %t25 = icmp sge i64 %t20, %t24 ret i1 %t25 -endif2156: +endif2163: %t26 = load i64, ptr %a13 %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2163, label %endif2165 -then2163: + br i1 %t27, label %then2170, label %endif2172 +then2170: ret i1 true -endif2165: +endif2172: %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 %then2173, label %endif2175 +then2173: %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 %endif2175 +endif2175: %t38 = load i64, ptr %a10 %t39 = load i64, ptr %a31 %t40 = icmp sle i64 %t38, %t39 @@ -22273,38 +22328,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 %panic2176, label %ok2177 +panic2176: + call void @finch_panic(ptr @.str.1285, i64 449, ptr @.str.1286) unreachable -ok2170: +ok2177: %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.cond2171 -for.cond2171: + br label %for.cond2178 +for.cond2178: %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.body2179, label %for.end2181 +for.body2179: %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 %panic2182, label %ok2183 +panic2182: + call void @finch_panic(ptr @.str.1287, i64 450, ptr @.str.1288) unreachable -ok2176: +ok2183: %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 %range2177, label %inrange2178 -range2177: - call void @finch_panic_index(ptr @.str.1285, i64 450, i64 %t15, i64 %t17) + br i1 %t18, label %range2184, label %inrange2185 +range2184: + call void @finch_panic_index(ptr @.str.1289, i64 450, i64 %t15, i64 %t17) unreachable -inrange2178: +inrange2185: %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 @@ -22314,27 +22369,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.from2186 +logic.from2186: + br i1 %t27, label %logic.rhs2187, label %logic.end2188 +logic.rhs2187: %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 %panic2189, label %ok2190 +panic2189: + call void @finch_panic(ptr @.str.1290, i64 450, ptr @.str.1291) unreachable -ok2183: +ok2190: %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 %range2184, label %inrange2185 -range2184: - call void @finch_panic_index(ptr @.str.1288, i64 450, i64 %t31, i64 %t33) + br i1 %t34, label %range2191, label %inrange2192 +range2191: + call void @finch_panic_index(ptr @.str.1292, i64 450, i64 %t31, i64 %t33) unreachable -inrange2185: +inrange2192: %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 @@ -22344,23 +22399,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.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: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2189: - br label %for.step2173 -for.step2173: +endif2196: + br label %for.step2180 +for.step2180: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2171 -for.end2174: + br label %for.cond2178 +for.end2181: ret i64 -1 } @@ -22379,38 +22434,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 %panic2197, label %ok2198 +panic2197: + call void @finch_panic(ptr @.str.1293, i64 458, ptr @.str.1294) unreachable -ok2191: +ok2198: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load i64, ptr %t7 store i64 0, ptr %a9 - br label %for.cond2192 -for.cond2192: + br label %for.cond2199 +for.cond2199: %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.body2200, label %for.end2202 +for.body2200: %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 %panic2203, label %ok2204 +panic2203: + call void @finch_panic(ptr @.str.1295, i64 459, ptr @.str.1296) unreachable -ok2197: +ok2204: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20 %t15 = load i64, ptr %a9 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2198, label %inrange2199 -range2198: - call void @finch_panic_index(ptr @.str.1293, i64 459, i64 %t15, i64 %t17) + br i1 %t18, label %range2205, label %inrange2206 +range2205: + call void @finch_panic_index(ptr @.str.1297, i64 459, i64 %t15, i64 %t17) unreachable -inrange2199: +inrange2206: %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 @@ -22420,27 +22475,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.from2207 +logic.from2207: + br i1 %t27, label %logic.rhs2208, label %logic.end2209 +logic.rhs2208: %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 %panic2210, label %ok2211 +panic2210: + call void @finch_panic(ptr @.str.1298, i64 459, ptr @.str.1299) unreachable -ok2204: +ok2211: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20 %t31 = load i64, ptr %a9 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2205, label %inrange2206 -range2205: - call void @finch_panic_index(ptr @.str.1296, i64 459, i64 %t31, i64 %t33) + br i1 %t34, label %range2212, label %inrange2213 +range2212: + call void @finch_panic_index(ptr @.str.1300, i64 459, i64 %t31, i64 %t33) unreachable -inrange2206: +inrange2213: %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 @@ -22450,23 +22505,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.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: %t45 = load i64, ptr %a9 ret i64 %t45 -endif2210: - br label %for.step2194 -for.step2194: +endif2217: + br label %for.step2201 +for.step2201: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond2192 -for.end2195: + br label %for.cond2199 +for.end2202: ret i64 -1 } @@ -22481,38 +22536,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 %panic2218, label %ok2219 +panic2218: + call void @finch_panic(ptr @.str.1301, i64 467, ptr @.str.1302) unreachable -ok2212: +ok2219: %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.cond2220 +for.cond2220: %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.body2221, label %for.end2223 +for.body2221: %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 %panic2224, label %ok2225 +panic2224: + call void @finch_panic(ptr @.str.1303, i64 468, ptr @.str.1304) unreachable -ok2218: +ok2225: %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 %range2226, label %inrange2227 +range2226: + call void @finch_panic_index(ptr @.str.1305, i64 468, i64 %t14, i64 %t16) unreachable -inrange2220: +inrange2227: %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 @@ -22522,18 +22577,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 %then2228, label %endif2230 +then2228: %t27 = load i64, ptr %a8 ret i64 %t27 -endif2223: - br label %for.step2215 -for.step2215: +endif2230: + br label %for.step2222 +for.step2222: %t28 = load i64, ptr %a8 %t29 = add i64 %t28, 1 store i64 %t29, ptr %a8 - br label %for.cond2213 -for.end2216: + br label %for.cond2220 +for.end2223: ret i64 -1 } @@ -22549,31 +22604,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 %panic2231, label %ok2232 +panic2231: + call void @finch_panic(ptr @.str.1306, i64 476, ptr @.str.1307) unreachable -ok2225: +ok2232: %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 %panic2233, label %ok2234 +panic2233: + call void @finch_panic(ptr @.str.1308, i64 476, ptr @.str.1309) unreachable -ok2227: +ok2234: %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13 %t10 = load { ptr, i64, i64 }, ptr %t9 %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) %t12 = load { ptr, i64, i64 }, ptr %t5 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2228, label %inrange2229 -range2228: - call void @finch_panic_index(ptr @.str.1306, i64 476, i64 %t11, i64 %t13) + br i1 %t14, label %range2235, label %inrange2236 +range2235: + call void @finch_panic_index(ptr @.str.1310, i64 476, i64 %t11, i64 %t13) unreachable -inrange2229: +inrange2236: %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 @@ -22583,27 +22638,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.cond2237 +find.cond2237: %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.body2238, label %find.end2241 +find.body2238: %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.hit2239, label %find.next2240 +find.hit2239: store i64 %t24, ptr %a20 - br label %find.end2234 -find.next2233: + br label %find.end2241 +find.next2240: %t32 = add i64 %t24, 1 store i64 %t32, ptr %a23 - br label %find.cond2230 -find.end2234: + br label %find.cond2237 +find.end2241: %t33 = load i64, ptr %a20 %t34 = icmp sge i64 %t33, 0 ret i1 %t34 @@ -22723,21 +22778,21 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1307, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1311, 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 %then2242, label %endif2244 +then2242: %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 %range2245, label %inrange2246 +range2245: + call void @finch_panic_index(ptr @.str.1312, i64 481, i64 0, i64 %t13) unreachable -inrange2239: +inrange2246: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -22745,25 +22800,25 @@ inrange2239: %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) ret %S.ast.Type %t20 -endif2237: +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.1309, i64 3, i64 0 }, ptr %a24 + 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 %then2240, label %endif2242 -then2240: + 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 %range2243, label %inrange2244 -range2243: - call void @finch_panic_index(ptr @.str.1310, i64 484, i64 0, i64 %t30) + br i1 %t31, label %range2250, label %inrange2251 +range2250: + call void @finch_panic_index(ptr @.str.1314, i64 484, i64 0, i64 %t30) unreachable -inrange2244: +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 @@ -22773,89 +22828,89 @@ inrange2244: %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: + 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.1311, i64 4, i64 0 }, ptr %a44 + 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.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: + 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.1312, i64 4, i64 0 }, ptr %a51 + 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.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: + 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.1313, i64 3, i64 0 }, ptr %a58 + 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.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: + 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.1314, i64 4, i64 0 }, ptr %a65 + 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.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: + 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.1315, i64 63, i64 0 }, ptr %a74 + 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 %endif2263 -endif2263: + 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 %range2264, label %inrange2265 -range2264: - call void @finch_panic_index(ptr @.str.1316, i64 488, i64 1, i64 %t80) + br i1 %t81, label %range2271, label %inrange2272 +range2271: + call void @finch_panic_index(ptr @.str.1320, i64 488, i64 1, i64 %t80) unreachable -inrange2265: +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 @@ -22865,30 +22920,30 @@ inrange2265: %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 + 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 %then2266, label %endif2268 -then2266: + 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.1318, i64 41, i64 0 }) - br label %endif2268 -endif2268: + 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 -endif2242: +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.1319, i64 5, i64 0 }, ptr %a102 + 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 %then2269, label %endif2271 -then2269: - %t105 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1320, i64 5, i64 0 }, 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 @@ -22900,11 +22955,11 @@ then2269: %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) + br i1 %t116, label %range2279, label %inrange2280 +range2279: + call void @finch_panic_index(ptr @.str.1325, i64 496, i64 0, i64 %t115) unreachable -inrange2273: +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 @@ -22919,37 +22974,37 @@ inrange2273: store i64 %t123, ptr %t111 %t126 = load %S.ast.Type, ptr %a109 ret %S.ast.Type %t126 -endif2271: +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.1322, i64 3, i64 0 }, ptr %a130 + 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 %then2274, label %endif2276 -then2274: + 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 %then2277, label %endif2279 -then2277: + 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 -endif2279: +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 %range2280, label %inrange2281 -range2280: - call void @finch_panic_index(ptr @.str.1323, i64 503, i64 0, i64 %t144) + br i1 %t145, label %range2287, label %inrange2288 +range2287: + call void @finch_panic_index(ptr @.str.1327, i64 503, i64 0, i64 %t144) unreachable -inrange2281: +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 @@ -22957,49 +23012,49 @@ inrange2281: %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: +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.1324, i64 5, i64 0 }, ptr %a155 + 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 %then2282, label %endif2284 -then2282: + 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 -endif2284: +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.from2285 -logic.from2285: - br i1 %t165, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: + 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 %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: + 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 %panic2292, label %ok2293 -panic2292: - call void @finch_panic(ptr @.str.1325, i64 509, ptr @.str.1326) + br i1 %t172, label %panic2299, label %ok2300 +panic2299: + call void @finch_panic(ptr @.str.1329, i64 509, ptr @.str.1330) unreachable -ok2293: +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 @@ -23008,51 +23063,51 @@ ok2293: %t178 = load i64, ptr %t174 %t179 = load ptr, ptr %t173 store i64 0, ptr %a180 - br label %find.cond2294 -find.cond2294: + br label %find.cond2301 +find.cond2301: %t181 = load i64, ptr %a180 %t182 = icmp slt i64 %t181, %t178 - br i1 %t182, label %find.body2295, label %find.end2298 -find.body2295: + 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.hit2296, label %find.next2297 -find.hit2296: + br i1 %t188, label %find.hit2303, label %find.next2304 +find.hit2303: store i64 %t181, ptr %a177 - br label %find.end2298 -find.next2297: + br label %find.end2305 +find.next2304: %t189 = add i64 %t181, 1 store i64 %t189, ptr %a180 - br label %find.cond2294 -find.end2298: + br label %find.cond2301 +find.end2305: %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: + 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 %panic2303, label %ok2304 -panic2303: - call void @finch_panic(ptr @.str.1327, i64 510, ptr @.str.1328) + br i1 %t194, label %panic2310, label %ok2311 +panic2310: + call void @finch_panic(ptr @.str.1331, i64 510, ptr @.str.1332) unreachable -ok2304: +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 %panic2305, label %ok2306 -panic2305: - call void @finch_panic(ptr @.str.1329, i64 510, ptr @.str.1330) + br i1 %t197, label %panic2312, label %ok2313 +panic2312: + call void @finch_panic(ptr @.str.1333, i64 510, ptr @.str.1334) unreachable -ok2306: +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 @@ -23061,36 +23116,36 @@ ok2306: %t203 = load i64, ptr %t199 %t204 = load ptr, ptr %t198 store i64 0, ptr %a205 - br label %find.cond2307 -find.cond2307: + br label %find.cond2314 +find.cond2314: %t206 = load i64, ptr %a205 %t207 = icmp slt i64 %t206, %t203 - br i1 %t207, label %find.body2308, label %find.end2311 -find.body2308: + 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.hit2309, label %find.next2310 -find.hit2309: + br i1 %t213, label %find.hit2316, label %find.next2317 +find.hit2316: store i64 %t206, ptr %a202 - br label %find.end2311 -find.next2310: + br label %find.end2318 +find.next2317: %t214 = add i64 %t206, 1 store i64 %t214, ptr %a205 - br label %find.cond2307 -find.end2311: + 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 %range2312, label %inrange2313 -range2312: - call void @finch_panic_index(ptr @.str.1331, i64 510, i64 %t215, i64 %t217) + br i1 %t218, label %range2319, label %inrange2320 +range2319: + call void @finch_panic_index(ptr @.str.1335, i64 510, i64 %t215, i64 %t217) unreachable -inrange2313: +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 @@ -23098,24 +23153,24 @@ inrange2313: call void @finch.copy.S_ast_Type(ptr %a223, ptr %a222) %t224 = load %S.ast.Type, ptr %a223 ret %S.ast.Type %t224 -endif2302: +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 %then2314, label %endif2316 -then2314: + 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.cond2317 -each.cond2317: + 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.body2318, label %each.end2320 -each.body2318: + 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 @@ -23132,20 +23187,20 @@ each.body2318: %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: + br label %each.step2326 +each.step2326: %t249 = load i64, ptr %a231 %t250 = add i64 %t249, 1 store i64 %t250, ptr %a231 - br label %each.cond2317 -each.end2320: + br label %each.cond2324 +each.end2327: %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) + br i1 %t252, label %panic2328, label %ok2329 +panic2328: + call void @finch_panic(ptr @.str.1336, i64 518, ptr @.str.1337) unreachable -ok2322: +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 @@ -23156,25 +23211,25 @@ ok2322: %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: + 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 %then2326, label %endif2328 -then2326: + 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.1334, i64 1, i64 0 }, ptr %a273 + 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.1335, i64 36, i64 0 }, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.1339, 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 @@ -23184,20 +23239,20 @@ then2326: 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 + 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 %endif2328 -endif2328: + 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 %endif2325 -endif2325: + 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 @@ -23206,54 +23261,54 @@ endif2325: %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: +endif2323: %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 + 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 %then2329, label %endif2331 -then2329: + 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.1338, i64 1, i64 0 }, { ptr, i64, i64 } %t310) + %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 %then2332, label %endif2334 -then2332: + 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.1339, i64 28, i64 0 }, ptr %a318 + 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.1340, i64 1, i64 0 }, ptr %a323 + 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 %endif2334 -endif2334: - %t325 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1341, i64 6, i64 0 }, 0 + 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.1342, i64 1, i64 0 }, 3 + %t332 = insertvalue %S.ast.Type %t331, { ptr, i64, i64 } { ptr @.str.1346, i64 1, i64 0 }, 3 ret %S.ast.Type %t332 -endif2331: +endif2338: %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) + br i1 %t334, label %panic2342, label %ok2343 +panic2342: + call void @finch_panic(ptr @.str.1347, i64 533, ptr @.str.1348) unreachable -ok2336: +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 @@ -23264,25 +23319,25 @@ ok2336: %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: + br i1 %t344, label %then2344, label %endif2346 +then2344: %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: + 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.1345, i64 1, i64 0 }, ptr %a355 + 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.1346, i64 36, i64 0 }, ptr %a360 + 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 @@ -23292,29 +23347,29 @@ then2340: 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 + 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 %endif2342 -endif2342: + 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 %endif2339 -endif2339: + 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 %then2343, label %endif2345 -then2343: - %t383 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, 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 @@ -23327,61 +23382,61 @@ then2343: %t393 = load { ptr, i64, i64 }, ptr %a392 %t394 = insertvalue %S.ast.Type %t389, { ptr, i64, i64 } %t393, 3 ret %S.ast.Type %t394 -endif2345: +endif2352: %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: + 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.from2349 -logic.from2349: - br i1 %t404, label %logic.rhs2350, label %logic.end2351 -logic.rhs2350: + 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.1349, i64 1, i64 0 }, { ptr, i64, i64 } %t407) + %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.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 + 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.1351, i64 1, i64 0 }, 3 + %t418 = insertvalue %S.ast.Type %t417, { ptr, i64, i64 } { ptr @.str.1355, i64 1, i64 0 }, 3 ret %S.ast.Type %t418 -endif2355: +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.1352, i64 24, i64 0 }, ptr %a424 + 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.1353, i64 1, i64 0 }, ptr %a429 + 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 %endif2348 -endif2348: - %t431 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1354, i64 6, i64 0 }, 0 + 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 @@ -23418,23 +23473,23 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.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.1360, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1361, 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.1363, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1364, 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 + 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.1365, i64 1, i64 0 }, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1366, i64 0, i64 0 }, ptr %a21 + 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 @@ -23449,10 +23504,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 %then2363, label %endif2365 +then2363: + ret { ptr, i64, i64 } { ptr @.str.1371, i64 4, i64 0 } +endif2365: %t5 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t5, ptr %a6 call void @finch_str_copy(ptr %a7, ptr %a6) @@ -23527,108 +23582,108 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1368, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1372, 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 %then2366, label %endif2368 +then2366: + ret { ptr, i64, i64 } { ptr @.str.1373, i64 2, i64 0 } +endif2368: %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.from2369 +logic.from2369: + br i1 %t15, label %logic.end2371, label %logic.rhs2370 +logic.rhs2370: %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.1374, 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.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: %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.1375, 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: +endif2375: %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 + 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 %then2369, label %endif2371 -then2369: - ret { ptr, i64, i64 } { ptr @.str.1373, i64 6, i64 0 } -endif2371: + 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.1374, i64 3, i64 0 }, ptr %a37 + 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 %then2372, label %endif2374 -then2372: - ret { ptr, i64, i64 } { ptr @.str.1375, i64 5, i64 0 } -endif2374: + 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.1376, i64 3, i64 0 }, ptr %a42 + 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.from2375 -logic.from2375: - br i1 %t44, label %logic.end2377, label %logic.rhs2376 -logic.rhs2376: + 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.1377, i64 5, i64 0 }, ptr %a47 + 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.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: + 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.1379, i64 3, i64 0 }, ptr %a53 + 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 %then2382, label %endif2384 -then2382: - ret { ptr, i64, i64 } { ptr @.str.1380, i64 37, i64 0 } -endif2384: + 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.1381, i64 5, i64 0 }, ptr %a58 + 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 %then2385, label %endif2387 -then2385: + 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.1382, i64 1, i64 0 }, ptr %a66 + 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.1383, i64 3, i64 0 }, ptr %a71 + 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 @@ -23636,11 +23691,11 @@ then2385: %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) + br i1 %t77, label %range2395, label %inrange2396 +range2395: + call void @finch_panic_index(ptr @.str.1388, i64 586, i64 0, i64 %t76) unreachable -inrange2389: +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 @@ -23650,61 +23705,61 @@ inrange2389: 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 + 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 -endif2387: +endif2394: %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 + 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 %then2390, label %endif2392 -then2390: - ret { ptr, i64, i64 } { ptr @.str.1387, i64 3, i64 0 } -endif2392: + 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.1388, i64 3, i64 0 }, ptr %a97 + 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.from2393 -logic.from2393: - br i1 %t99, label %logic.end2395, label %logic.rhs2394 -logic.rhs2394: + 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.1389, i64 4, i64 0 }, ptr %a102 + 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.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: + 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: %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.1395, 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: + 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.1393, i64 3, i64 0 }, ptr %a115 + 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.1394, i64 1, i64 0 }, ptr %a120 + 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 @@ -23735,38 +23790,38 @@ entry: %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then2403, label %endif2405 -then2403: + br i1 %t5, label %then2410, label %endif2412 +then2410: %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 +endif2412: + store { ptr, i64, i64 } { ptr @.str.1399, 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.1400, 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 %then2413, label %endif2415 +then2413: %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: + br label %endif2415 +endif2415: %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, i64 6, i64 0 }, ptr %a24 + 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.1398, i64 21, i64 0 }, ptr %a29 + 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 @@ -23800,7 +23855,7 @@ entry: %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1403, 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,7 +23867,7 @@ entry: call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a18 + 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 @@ -23824,7 +23879,7 @@ entry: call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1401, i64 1, i64 0 }, ptr %a30 + 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 @@ -23863,77 +23918,77 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load %S.ast.Type, ptr %a1 %t9 = call i1 @finch.gen.isInt(%S.ast.Type %t8) - br label %logic.from2409 -logic.from2409: - br i1 %t9, label %logic.end2411, label %logic.rhs2410 -logic.rhs2410: + br label %logic.from2416 +logic.from2416: + br i1 %t9, label %logic.end2418, label %logic.rhs2417 +logic.rhs2417: %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.1406, 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.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: %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.1407, 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.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: %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.1409, 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 %then2427, label %endif2429 +then2427: + ret { ptr, i64, i64 } { ptr @.str.1410, i64 5, i64 0 } +endif2429: %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 %then2430, label %endif2432 +then2430: + ret { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 } +endif2432: %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.1412, 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.from2433 +logic.from2433: + br i1 %t33, label %logic.end2435, label %logic.rhs2434 +logic.rhs2434: %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.1413, 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.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 } } define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) { @@ -23951,12 +24006,12 @@ entry: %t3 = load ptr, ptr %a1 %t4 = load %S.ast.Type, ptr %a2 %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1412, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1416, 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 + 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 @@ -23979,58 +24034,58 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1414, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1418, 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.from2440 +logic.from2440: + br i1 %t8, label %logic.end2442, label %logic.rhs2441 +logic.rhs2441: %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.1419, 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.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: %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.1420, 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.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: ret i1 true -endif2443: +endif2450: %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.1421, 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 %then2451, label %endif2453 +then2451: %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 %panic2454, label %ok2455 +panic2454: + call void @finch_panic(ptr @.str.1422, i64 644, ptr @.str.1423) unreachable -ok2448: +ok2455: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 %t32 = load ptr, ptr %a1 %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -24041,17 +24096,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 %range2456, label %inrange2457 +range2456: + call void @finch_panic_index(ptr @.str.1424, i64 644, i64 %t37, i64 %t39) unreachable -inrange2450: +inrange2457: %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: +endif2453: ret i1 false } @@ -24102,68 +24157,68 @@ entry: %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1421, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1425, 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 %then2458, label %endif2460 +then2458: %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 %range2461, label %inrange2462 +range2461: + call void @finch_panic_index(ptr @.str.1427, i64 651, i64 0, i64 %t10) unreachable -inrange2455: +inrange2462: %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.1426, 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: +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.1424, i64 3, i64 0 }, ptr %a23 + 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 %then2456, label %endif2458 -then2456: + 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 %range2459, label %inrange2460 -range2459: - call void @finch_panic_index(ptr @.str.1426, i64 654, i64 0, i64 %t28) + br i1 %t29, label %range2466, label %inrange2467 +range2466: + call void @finch_panic_index(ptr @.str.1430, i64 654, i64 0, i64 %t28) unreachable -inrange2460: +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.1425, i64 4, i64 0 }, ptr %a35 + 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.1427, i64 1, i64 0 }, ptr %a40 + 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 %range2461, label %inrange2462 -range2461: - call void @finch_panic_index(ptr @.str.1428, i64 654, i64 1, i64 %t44) + br i1 %t45, label %range2468, label %inrange2469 +range2468: + call void @finch_panic_index(ptr @.str.1432, i64 654, i64 1, i64 %t44) unreachable -inrange2462: +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 @@ -24173,24 +24228,24 @@ inrange2462: call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) %t53 = load { ptr, i64, i64 }, ptr %a50 ret { ptr, i64, i64 } %t53 -endif2458: +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.1429, i64 4, i64 0 }, ptr %a57 + 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 %then2463, label %endif2465 -then2463: + 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.1430, i64 2, i64 0 }, ptr %a64 + 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.1431, i64 1, i64 0 }, ptr %a69 + 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 @@ -24200,24 +24255,24 @@ then2463: call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 ret { ptr, i64, i64 } %t76 -endif2465: +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.1432, i64 6, i64 0 }, ptr %a80 + 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 %then2466, label %endif2468 -then2466: + 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.1433, i64 2, i64 0 }, ptr %a87 + 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.1434, i64 1, i64 0 }, ptr %a92 + 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 @@ -24228,7 +24283,7 @@ then2466: call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 ret { ptr, i64, i64 } %t100 -endif2468: +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 @@ -24247,17 +24302,17 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1435, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1439, 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 %range2476, label %inrange2477 +range2476: + call void @finch_panic_index(ptr @.str.1440, i64 669, i64 %t4, i64 %t6) unreachable -inrange2470: +inrange2477: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t4 %t10 = load i8, ptr %t9 @@ -24268,11 +24323,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 %range2478, label %inrange2479 +range2478: + call void @finch_panic_index(ptr @.str.1441, i64 669, i64 %t14, i64 %t16) unreachable -inrange2472: +inrange2479: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds i8, ptr %t18, i64 %t14 %t20 = load i8, ptr %t19 @@ -24326,41 +24381,41 @@ entry: 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 %panic2480, label %ok2481 +panic2480: + call void @finch_panic(ptr @.str.1442, i64 673, ptr @.str.1443) unreachable -ok2474: +ok2481: %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 %panic2482, label %ok2483 +panic2482: + call void @finch_panic(ptr @.str.1445, i64 674, ptr @.str.1446) unreachable -ok2476: +ok2483: %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.1444, 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: + 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.body2478, label %each.end2480 -each.body2478: + 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 @@ -24370,50 +24425,50 @@ each.body2478: store i64 %t30, ptr %a31 %t32 = load i64, ptr %a31 %t33 = icmp slt i64 %t32, 0 - br i1 %t33, label %then2481, label %endif2483 -then2481: + 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 %endif2483 -endif2483: + br label %endif2490 +endif2490: %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: + 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.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: + 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.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: + 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.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: + 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) @@ -24425,12 +24480,12 @@ then2496: %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: + 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.1443, i64 1, i64 0 }, ptr %a59 + 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 @@ -24441,27 +24496,27 @@ else2497: %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: + 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.cond2477 -each.end2480: + br label %each.cond2484 +each.end2487: %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) + br i1 %t69, label %panic2506, label %ok2507 +panic2506: + call void @finch_panic(ptr @.str.1448, i64 687, ptr @.str.1449) unreachable -ok2500: +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.1446, i64 34, i64 0 }, ptr %a75 + 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 @@ -24474,11 +24529,11 @@ ok2500: 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 + 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.1448, i64 0, i64 0 }, ptr %a91 + 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 @@ -24486,7 +24541,7 @@ ok2500: 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 + 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 @@ -24528,12 +24583,12 @@ entry: %t5 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t3, { ptr, i64, i64 } %t4) store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1450, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1454, 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.1455, 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 @@ -24545,11 +24600,11 @@ entry: call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1452, i64 9, i64 0 }, ptr %a26 + 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.1453, i64 3, i64 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 @@ -24589,10 +24644,10 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Node %p3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1454, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1458, 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.1459, i64 2, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 @@ -24605,22 +24660,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 %panic2508, label %ok2509 +panic2508: + call void @finch_panic(ptr @.str.1460, i64 703, ptr @.str.1461) unreachable -ok2502: +ok2509: %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 %range2510, label %inrange2511 +range2510: + call void @finch_panic_index(ptr @.str.1462, i64 703, i64 %t22, i64 %t24) unreachable -inrange2504: +inrange2511: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -24632,12 +24687,12 @@ 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.1463, 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.1464, 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 @@ -24649,7 +24704,7 @@ inrange2504: 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 + 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 @@ -24658,19 +24713,19 @@ inrange2504: 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 } { ptr @.str.1466, i64 1, i64 0 }, ptr %a64 call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t65) %t66 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } { ptr @.str.1463, i64 11, i64 0 }) + 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 %panic2505, label %ok2506 -panic2505: - call void @finch_panic(ptr @.str.1464, i64 707, ptr @.str.1465) + br i1 %t68, label %panic2512, label %ok2513 +panic2512: + call void @finch_panic(ptr @.str.1468, i64 707, ptr @.str.1469) unreachable -ok2506: +ok2513: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 store i1 true, ptr %t69 %t70 = load ptr, ptr %a1 @@ -24728,19 +24783,19 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Node %p3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1466, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1470, 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.1471, 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.1472, 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.1473, 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 @@ -24761,22 +24816,22 @@ entry: %t34 = load ptr, ptr %a1 %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) + br i1 %t36, label %panic2514, label %ok2515 +panic2514: + call void @finch_panic(ptr @.str.1474, i64 717, ptr @.str.1475) unreachable -ok2508: +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 %range2509, label %inrange2510 -range2509: - call void @finch_panic_index(ptr @.str.1472, i64 717, i64 %t39, i64 %t41) + br i1 %t42, label %range2516, label %inrange2517 +range2516: + call void @finch_panic_index(ptr @.str.1476, i64 717, i64 %t39, i64 %t41) unreachable -inrange2510: +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 @@ -24784,12 +24839,12 @@ inrange2510: 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 } { 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.1474, i64 6, i64 0 }, ptr %a56 + 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 @@ -24801,7 +24856,7 @@ inrange2510: 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 + store { ptr, i64, i64 } { ptr @.str.1479, i64 6, i64 0 }, ptr %a68 call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) %t69 = load { ptr, i64, i64 }, ptr %a66 %t70 = load { ptr, i64, i64 }, ptr %a2 @@ -24810,7 +24865,7 @@ inrange2510: 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 + 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 @@ -24819,19 +24874,19 @@ inrange2510: 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 + 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.1478, i64 11, i64 0 }) + 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 %panic2511, label %ok2512 -panic2511: - call void @finch_panic(ptr @.str.1479, i64 720, ptr @.str.1480) + br i1 %t90, label %panic2518, label %ok2519 +panic2518: + call void @finch_panic(ptr @.str.1483, i64 720, ptr @.str.1484) unreachable -ok2512: +ok2519: %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 9 store i1 true, ptr %t91 %t92 = load ptr, ptr %a1 @@ -24872,11 +24927,11 @@ entry: 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 %panic2520, label %ok2521 +panic2520: + call void @finch_panic(ptr @.str.1485, i64 735, ptr @.str.1486) unreachable -ok2514: +ok2521: %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 @@ -24885,11 +24940,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 %panic2522, label %ok2523 +panic2522: + call void @finch_panic(ptr @.str.1487, i64 735, ptr @.str.1488) unreachable -ok2516: +ok2523: %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 @@ -24898,53 +24953,53 @@ 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 %panic2524, label %ok2525 +panic2524: + call void @finch_panic(ptr @.str.1489, i64 735, ptr @.str.1490) unreachable -ok2518: +ok2525: %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 %panic2526, label %ok2527 +panic2526: + call void @finch_panic(ptr @.str.1491, i64 735, ptr @.str.1492) unreachable -ok2520: +ok2527: %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 %panic2528, label %ok2529 +panic2528: + call void @finch_panic(ptr @.str.1493, i64 735, ptr @.str.1494) unreachable -ok2522: +ok2529: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 %t31 = load i64, ptr %t30 %t32 = insertvalue %S.gen.Saved %t27, i64 %t31, 4 store %S.gen.Saved %t32, ptr %a33 %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2523, label %ok2524 -panic2523: - call void @finch_panic(ptr @.str.1491, i64 736, ptr @.str.1492) + br i1 %t35, label %panic2530, label %ok2531 +panic2530: + call void @finch_panic(ptr @.str.1495, i64 736, ptr @.str.1496) unreachable -ok2524: +ok2531: %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 34 store i64 -1, ptr %t36 store { ptr, i64, i64 } zeroinitializer, ptr %a37 %t38 = load { ptr, i64, i64 }, ptr %a37 %t39 = load ptr, ptr %a1 %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic2525, label %ok2526 -panic2525: - call void @finch_panic(ptr @.str.1493, i64 738, ptr @.str.1494) + br i1 %t40, label %panic2532, label %ok2533 +panic2532: + call void @finch_panic(ptr @.str.1497, i64 738, ptr @.str.1498) unreachable -ok2526: +ok2533: %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) @@ -24953,11 +25008,11 @@ ok2526: %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) + br i1 %t47, label %panic2534, label %ok2535 +panic2534: + call void @finch_panic(ptr @.str.1499, i64 739, ptr @.str.1500) unreachable -ok2528: +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) @@ -24965,20 +25020,20 @@ ok2528: 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) + br i1 %t53, label %panic2536, label %ok2537 +panic2536: + call void @finch_panic(ptr @.str.1501, i64 740, ptr @.str.1502) unreachable -ok2530: +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 %panic2531, label %ok2532 -panic2531: - call void @finch_panic(ptr @.str.1499, i64 741, ptr @.str.1500) + br i1 %t56, label %panic2538, label %ok2539 +panic2538: + call void @finch_panic(ptr @.str.1503, i64 741, ptr @.str.1504) unreachable -ok2532: +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 @@ -25021,28 +25076,28 @@ entry: 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 %panic2540, label %ok2541 +panic2540: + call void @finch_panic(ptr @.str.1505, i64 746, ptr @.str.1506) unreachable -ok2534: +ok2541: %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.1507, 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 %panic2542, label %ok2543 +panic2542: + call void @finch_panic(ptr @.str.1508, i64 746, ptr @.str.1509) unreachable -ok2536: +ok2543: %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.1510, 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 @@ -25050,19 +25105,19 @@ ok2536: 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 + 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 %panic2537, label %ok2538 -panic2537: - call void @finch_panic(ptr @.str.1508, i64 746, ptr @.str.1509) + br i1 %t29, label %panic2544, label %ok2545 +panic2544: + call void @finch_panic(ptr @.str.1512, i64 746, ptr @.str.1513) unreachable -ok2538: +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.1510, i64 1, i64 0 }, ptr %a32 + 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 @@ -25070,7 +25125,7 @@ ok2538: 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 + 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 @@ -25084,11 +25139,11 @@ ok2538: %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) + br i1 %t50, label %panic2546, label %ok2547 +panic2546: + call void @finch_panic(ptr @.str.1516, i64 747, ptr @.str.1517) unreachable -ok2540: +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) @@ -25098,11 +25153,11 @@ ok2540: %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) + br i1 %t58, label %panic2548, label %ok2549 +panic2548: + call void @finch_panic(ptr @.str.1518, i64 748, ptr @.str.1519) unreachable -ok2542: +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) @@ -25112,33 +25167,33 @@ ok2542: %t64 = load 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 %panic2550, label %ok2551 +panic2550: + call void @finch_panic(ptr @.str.1520, i64 749, ptr @.str.1521) unreachable -ok2544: +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 %panic2545, label %ok2546 -panic2545: - call void @finch_panic(ptr @.str.1518, i64 750, ptr @.str.1519) + br i1 %t71, label %panic2552, label %ok2553 +panic2552: + call void @finch_panic(ptr @.str.1522, i64 750, ptr @.str.1523) unreachable -ok2546: +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 %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 %panic2554, label %ok2555 +panic2554: + call void @finch_panic(ptr @.str.1524, i64 751, ptr @.str.1525) unreachable -ok2548: +ok2555: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 34 store i64 %t74, ptr %t77 ret void @@ -25174,19 +25229,19 @@ entry: store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1522, i64 3, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1526, 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.1527, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1528, 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.1529, 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.1530, 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.1531, i64 5, i64 0 }) store { ptr, i64, i64 } %t15, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = load { ptr, i64, i64 }, ptr %a10 @@ -25196,16 +25251,16 @@ entry: call void @finch.gen.label(ptr %t19, { ptr, i64, i64 } %t20) %t21 = load ptr, ptr %a1 %t22 = load { ptr, i64, i64 }, ptr %a5 - %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1528, i64 3, i64 0 }, { ptr, i64, i64 } %t22) + %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1532, 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.1533, 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.1534, 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 @@ -25272,49 +25327,49 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %a2 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2549, label %inrange2550 -range2549: - call void @finch_panic_index(ptr @.str.1532, i64 771, i64 0, i64 %t5) + br i1 %t6, label %range2556, label %inrange2557 +range2556: + call void @finch_panic_index(ptr @.str.1536, i64 771, i64 0, i64 %t5) unreachable -inrange2550: +inrange2557: %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.1535, 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.1538, 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.1539, 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) + br i1 %t26, label %range2558, label %inrange2559 +range2558: + call void @finch_panic_index(ptr @.str.1540, i64 772, i64 0, i64 %t25) unreachable -inrange2552: +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.1533, i64 3, i64 0 }, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t29) + 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 %range2553, label %inrange2554 -range2553: - call void @finch_panic_index(ptr @.str.1537, i64 773, i64 1, i64 %t32) + br i1 %t33, label %range2560, label %inrange2561 +range2560: + call void @finch_panic_index(ptr @.str.1541, i64 773, i64 1, i64 %t32) unreachable -inrange2554: +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 @@ -25323,11 +25378,11 @@ inrange2554: %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) + br i1 %t40, label %range2562, label %inrange2563 +range2562: + call void @finch_panic_index(ptr @.str.1542, i64 774, i64 2, i64 %t39) unreachable -inrange2556: +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 @@ -25386,19 +25441,19 @@ entry: %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.1539, i64 3, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1543, 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 %then2564, label %else2565 +then2564: %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.1544, 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.1545, 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 @@ -25407,72 +25462,72 @@ then2557: 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 + 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 %endif2559 -else2558: + 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.1543, i64 5, i64 0 }, ptr %a33 + 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.from2560 -logic.from2560: - br i1 %t35, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: + 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.1544, i64 3, i64 0 }, ptr %a39 + 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.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: + %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.1546, i64 10, i64 0 }, ptr %a59 + 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.1547, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1551, i64 5, i64 0 }, ptr %a64 call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 %t66 = load { ptr, i64, i64 }, ptr %a2 @@ -25481,7 +25536,7 @@ then2572: 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 + 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 @@ -25490,12 +25545,12 @@ then2572: 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 + 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 %endif2574 -else2573: + br label %endif2581 +else2580: %t84 = load ptr, ptr %a1 %t85 = load ptr, ptr %a1 %t86 = load %S.ast.Type, ptr %a4 @@ -25508,10 +25563,10 @@ else2573: %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: + br label %endif2581 +endif2581: + br label %endif2566 +endif2566: ret void } @@ -25652,37 +25707,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1550, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1554, 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) + br i1 %t11, label %panic2582, label %ok2583 +panic2582: + call void @finch_panic(ptr @.str.1555, i64 789, ptr @.str.1556) unreachable -ok2576: +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 %then2577, label %endif2579 -then2577: + 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 -endif2579: +endif2586: %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) + br i1 %t21, label %panic2587, label %ok2588 +panic2587: + call void @finch_panic(ptr @.str.1557, i64 792, ptr @.str.1558) unreachable -ok2581: +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 @@ -25702,20 +25757,20 @@ ok2581: %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 + 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 %then2582, label %else2583 -then2582: + 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 %range2585, label %inrange2586 -range2585: - call void @finch_panic_index(ptr @.str.1556, i64 795, i64 0, i64 %t43) + br i1 %t44, label %range2592, label %inrange2593 +range2592: + call void @finch_panic_index(ptr @.str.1560, i64 795, i64 0, i64 %t43) unreachable -inrange2586: +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 @@ -25727,30 +25782,30 @@ inrange2586: %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 } { 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.1558, i64 1, i64 0 }, ptr %a62 + 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 %then2587, label %endif2589 -then2587: + 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.1559, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1560, i64 4, i64 0 }) + %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.1561, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1562, i64 4, i64 0 }) + %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 %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) + %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 @@ -25760,12 +25815,12 @@ then2587: %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 } { 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.1566, i64 6, i64 0 }, ptr %a92 + 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 @@ -25774,17 +25829,17 @@ then2587: 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 + store { ptr, i64, i64 } { ptr @.str.1571, i64 6, i64 0 }, ptr %a101 call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 %t103 = load { ptr, i64, i64 }, ptr %a81 %t104 = extractvalue { ptr, i64, i64 } %t103, 1 %t105 = icmp uge i64 3, %t104 - br i1 %t105, label %range2590, label %inrange2591 -range2590: - call void @finch_panic_index(ptr @.str.1568, i64 802, i64 3, i64 %t104) + br i1 %t105, label %range2597, label %inrange2598 +range2597: + call void @finch_panic_index(ptr @.str.1572, i64 802, i64 3, i64 %t104) unreachable -inrange2591: +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 @@ -25798,12 +25853,12 @@ inrange2591: %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 } { 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.1570, i64 6, i64 0 }, ptr %a125 + 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 @@ -25812,17 +25867,17 @@ inrange2591: 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.1571, i64 6, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1575, 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) + br i1 %t138, label %range2599, label %inrange2600 +range2599: + call void @finch_panic_index(ptr @.str.1576, i64 803, i64 3, i64 %t137) unreachable -inrange2593: +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 @@ -25840,28 +25895,28 @@ inrange2593: %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: + 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.1573, i64 3, i64 0 }, ptr %a157 + 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 %then2594, label %else2595 -then2594: + 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.1574, i64 55, i64 0 }, ptr %a165 + 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.1575, i64 1, i64 0 }, ptr %a170 + 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) @@ -25870,55 +25925,55 @@ then2594: %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) + br i1 %t176, label %range2604, label %inrange2605 +range2604: + call void @finch_panic_index(ptr @.str.1580, i64 809, i64 0, i64 %t175) unreachable -inrange2598: +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.from2599 -logic.from2599: - br i1 %t180, label %logic.end2601, label %logic.rhs2600 -logic.rhs2600: + 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 %range2602, label %inrange2603 -range2602: - call void @finch_panic_index(ptr @.str.1577, i64 809, i64 1, i64 %t184) + br i1 %t185, label %range2609, label %inrange2610 +range2609: + call void @finch_panic_index(ptr @.str.1581, i64 809, i64 1, i64 %t184) unreachable -inrange2603: +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.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: + 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.1579, i64 23, i64 0 }, ptr %a197 + 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.1580, i64 24, i64 0 }, ptr %a202 + 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.1578, i64 3, i64 0 }, { ptr, i64, i64 } %t204) + %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 @@ -25929,36 +25984,36 @@ then2605: %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) + br i1 %t215, label %range2615, label %inrange2616 +range2615: + call void @finch_panic_index(ptr @.str.1586, i64 813, i64 3, i64 %t214) unreachable -inrange2609: +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.1581, i64 4, i64 0 }, %S.ast.Type %t212, { ptr, i64, i64 } %t218) + %t219 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t211, { ptr, i64, i64 } { ptr @.str.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 %range2610, label %inrange2611 -range2610: - call void @finch_panic_index(ptr @.str.1584, i64 814, i64 3, i64 %t224) + br i1 %t225, label %range2617, label %inrange2618 +range2617: + call void @finch_panic_index(ptr @.str.1588, i64 814, i64 3, i64 %t224) unreachable -inrange2611: +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.1583, i64 4, i64 0 }, %S.ast.Type %t222, { ptr, i64, i64 } %t228) + %t229 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t221, { ptr, i64, i64 } { ptr @.str.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.1585, i64 10, i64 0 }) + %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.1586, i64 10, i64 0 }) + %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 @@ -25967,12 +26022,12 @@ inrange2611: %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 } { 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.1590, i64 6, i64 0 }, ptr %a250 + 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 @@ -25981,17 +26036,17 @@ inrange2611: 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 + 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.1588, i64 3, i64 0 }, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a264 + %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.1592, i64 3, i64 0 }, ptr %a269 + 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) @@ -26014,11 +26069,11 @@ inrange2611: %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) + br i1 %t288, label %range2619, label %inrange2620 +range2619: + call void @finch_panic_index(ptr @.str.1597, i64 819, i64 0, i64 %t287) unreachable -inrange2613: +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 @@ -26036,11 +26091,11 @@ inrange2613: %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) + br i1 %t304, label %range2621, label %inrange2622 +range2621: + call void @finch_panic_index(ptr @.str.1598, i64 820, i64 1, i64 %t303) unreachable -inrange2615: +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 @@ -26054,17 +26109,17 @@ inrange2615: %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: + br label %endif2614 +endif2614: + br label %endif2603 +else2602: %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) + br i1 %t315, label %panic2623, label %ok2624 +panic2623: + call void @finch_panic(ptr @.str.1599, i64 826, ptr @.str.1600) unreachable -ok2617: +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 @@ -26075,11 +26130,11 @@ ok2617: %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) + br i1 %t325, label %range2625, label %inrange2626 +range2625: + call void @finch_panic_index(ptr @.str.1601, i64 826, i64 %t322, i64 %t324) unreachable -inrange2619: +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 @@ -26095,43 +26150,43 @@ inrange2619: %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 }) + %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.cond2620 -for.cond2620: + br label %for.cond2627 +for.cond2627: %t346 = load i64, ptr %a345 %t347 = icmp slt i64 %t346, %t344 - br i1 %t347, label %for.body2621, label %for.end2623 -for.body2621: + 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 %range2624, label %inrange2625 -range2624: - call void @finch_panic_index(ptr @.str.1600, i64 830, i64 %t350, i64 %t352) + br i1 %t353, label %range2631, label %inrange2632 +range2631: + call void @finch_panic_index(ptr @.str.1604, i64 830, i64 %t350, i64 %t352) unreachable -inrange2625: +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 %then2626, label %endif2628 -then2626: + 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.1601, i64 23, i64 0 }, ptr %a361 + 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.1602, i64 23, i64 0 }, ptr %a366 + 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 @@ -26139,11 +26194,11 @@ then2626: %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) + br i1 %t372, label %range2636, label %inrange2637 +range2636: + call void @finch_panic_index(ptr @.str.1607, i64 831, i64 %t369, i64 %t371) unreachable -inrange2630: +inrange2637: %t373 = extractvalue { ptr, i64, i64 } %t370, 0 %t374 = getelementptr inbounds i64, ptr %t373, i64 %t369 %t375 = load i64, ptr %t374 @@ -26157,12 +26212,12 @@ inrange2630: store { ptr, i64, i64 } %t382, ptr %a383 %t384 = load ptr, ptr %a1 %t385 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.1604, i64 23, i64 0 }, ptr %a387 + 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.1605, i64 23, i64 0 }, ptr %a392 + 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 @@ -26170,11 +26225,11 @@ inrange2630: %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) + br i1 %t398, label %range2638, label %inrange2639 +range2638: + call void @finch_panic_index(ptr @.str.1610, i64 832, i64 %t395, i64 %t397) unreachable -inrange2632: +inrange2639: %t399 = extractvalue { ptr, i64, i64 } %t396, 0 %t400 = getelementptr inbounds i64, ptr %t399, i64 %t395 %t401 = load i64, ptr %t400 @@ -26194,39 +26249,39 @@ inrange2632: %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) + br i1 %t417, label %range2640, label %inrange2641 +range2640: + call void @finch_panic_index(ptr @.str.1611, i64 833, i64 %t414, i64 %t416) unreachable -inrange2634: +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 %endif2628 -endif2628: - br label %for.step2622 -for.step2622: + 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.cond2620 -for.end2623: - br label %endif2596 -endif2596: - br label %endif2584 -endif2584: + 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.1608, i64 8, i64 0 }) + call void @finch.gen.emit(ptr %t423, { ptr, i64, i64 } { ptr @.str.1612, i64 8, i64 0 }) %t424 = load ptr, ptr %a1 %t425 = load %S.gen.Saved, ptr %a34 %t426 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1609, i64 21, i64 0 }, ptr %a428 + 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.1610, i64 20, i64 0 }, ptr %a433 + 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) @@ -26257,14 +26312,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 %then2642, label %endif2644 +then2642: %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: +endif2644: %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t13, ptr %a14 @@ -26311,26 +26366,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.from2645 +logic.from2645: + br i1 %t7, label %logic.end2647, label %logic.rhs2646 +logic.rhs2646: %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.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: %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: +endif2651: %t16 = load ptr, ptr %a1 %t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 @@ -26373,24 +26428,24 @@ entry: %t8 = load ptr, ptr %a1 %t9 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t8) store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1611, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1615, 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 %then2652, label %endif2654 +then2652: %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.1616, i64 2, i64 0 }, ptr %a17 store { ptr, i64, i64 } %t15, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a11 - br label %endif2647 -endif2647: + 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.1613, i64 35, i64 0 }, ptr %a24 + 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 @@ -26404,7 +26459,7 @@ endif2647: 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 + 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) @@ -26449,39 +26504,39 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1615, i64 31, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1619, 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.1620, 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 } { 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.1618, i64 6, i64 0 }, ptr %a23 + 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.1619, i64 0, i64 0 }) + %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.1620, i64 10, i64 0 }, ptr %a33 + 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.1621, i64 6, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1625, i64 6, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 %t40 = load { ptr, i64, i64 }, ptr %a29 @@ -26490,7 +26545,7 @@ entry: call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1622, i64 6, i64 0 }, ptr %a47 + 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 @@ -26635,118 +26690,118 @@ entry: store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load %S.ast.Type, ptr %a3 %t12 = call i1 @finch.gen.isSigned(%S.ast.Type %t11) - br i1 %t12, label %then2648, label %else2649 -then2648: + br i1 %t12, label %then2655, label %else2656 +then2655: %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.1629, 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 } { 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.1623, i64 4, i64 0 }, { ptr, i64, i64 } %t22) - br label %endif2650 -else2649: + 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 %then2651, label %else2652 -then2651: + 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.1628, i64 3, i64 0 }) + %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.1627, i64 4, i64 0 }, ptr %a32 + 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.1626, i64 4, i64 0 }, { ptr, i64, i64 } %t34) - br label %endif2653 -else2652: + 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 %then2654, label %else2655 -then2654: + 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.1631, i64 5, i64 0 }) + %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.1630, i64 7, i64 0 }, ptr %a44 + 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.1629, i64 2, i64 0 }, { ptr, i64, i64 } %t46) - br label %endif2656 -else2655: + 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.1632, i64 4, i64 0 }, ptr %a49 + 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 %then2657, label %else2658 -then2657: + 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.1633, i64 8, i64 0 }, ptr %a55 + 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.1634, i64 7, i64 0 }, ptr %a60 + 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 %then2660, label %else2661 -then2660: + br i1 %t64, label %then2667, label %else2668 +then2667: %t65 = load ptr, ptr %a1 %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1640, i64 4, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.printf(ptr %t65, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }, { ptr, i64, i64 } %t70) - br label %endif2662 -else2661: + 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.1638, i64 4, i64 0 }, ptr %a74 + 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.1637, i64 2, i64 0 }, { ptr, i64, i64 } %t76) - br label %endif2662 -endif2662: - br label %endif2659 -else2658: + 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.1639, i64 4, i64 0 }, ptr %a79 + 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 %then2663, label %else2664 -then2663: + 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.1640, i64 4, i64 0 }) + %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.1641, i64 5, i64 0 }) + %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.1642, i64 10, i64 0 }, ptr %a91 + 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.1643, i64 6, i64 0 }, ptr %a96 + 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 @@ -26755,7 +26810,7 @@ then2663: 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 } { ptr @.str.1648, i64 6, i64 0 }, ptr %a105 call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) %t106 = load { ptr, i64, i64 }, ptr %a103 %t107 = load { ptr, i64, i64 }, ptr %a87 @@ -26767,40 +26822,40 @@ then2663: 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 } { 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.1645, i64 2, i64 0 }, { ptr, i64, i64 } %t119) - br label %endif2665 -else2664: + 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.1647, i64 3, i64 0 }, ptr %a122 + 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 %then2666, label %else2667 -then2666: + 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.1648, i64 31, i64 0 }, ptr %a128 + 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.1649, i64 3, i64 0 }, ptr %a133 + 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.1650, i64 10, i64 0 }, ptr %a140 + 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.1651, i64 7, i64 0 }, ptr %a145 + 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) @@ -26810,16 +26865,16 @@ then2666: %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: + 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.1653, i64 4, i64 0 }, ptr %a157 + 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.1654, i64 6, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.1658, i64 6, i64 0 }, ptr %a162 call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) %t163 = load { ptr, i64, i64 }, ptr %a160 %t164 = load { ptr, i64, i64 }, ptr %a152 @@ -26827,17 +26882,17 @@ then2669: 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: + 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.1656, i64 4, i64 0 }, ptr %a172 + 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.1657, i64 6, i64 0 }, ptr %a177 + 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 @@ -26845,38 +26900,38 @@ else2670: 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: + 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.1658, i64 3, i64 0 }, ptr %a186 + 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 %then2672, label %else2673 -then2672: + 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.1659, i64 12, i64 0 }, ptr %a192 + 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.1660, i64 6, i64 0 }, ptr %a197 + 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.1661, i64 8, i64 0 }) + %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.1662, i64 8, i64 0 }) + %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.1663, i64 8, i64 0 }) + %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 @@ -26887,7 +26942,7 @@ then2672: %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 }) + 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) @@ -26897,45 +26952,45 @@ then2672: %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 } { ptr @.str.1672, i64 13, i64 0 }, ptr %a225 store { ptr, i64, i64 } %t223, ptr %a226 call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) %t227 = load { ptr, i64, i64 }, ptr %a224 store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.1669, i64 7, i64 0 }, ptr %a230 + 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.1667, i64 4, i64 0 }, ptr %a234 + 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.1666, i64 6, i64 0 }, { ptr, i64, i64 } %t236) + 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 %endif2674 -else2673: + br label %endif2681 +else2680: %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 + 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 %then2675, label %else2676 -then2675: + 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.1671, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1672, i64 0, i64 0 }) - br label %endif2677 -else2676: + 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: %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 }) + %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 %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) + 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) %t252 = load ptr, ptr %a1 %t253 = load { ptr, i64, i64 }, ptr %a249 %t254 = load { ptr, i64, i64 }, ptr %a2 @@ -26944,31 +26999,31 @@ else2676: 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 } { ptr @.str.1680, i64 31, i64 0 }, ptr %a260 store { ptr, i64, i64 } %t258, ptr %a261 call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) %t262 = load { ptr, i64, i64 }, ptr %a259 store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.1677, i64 1, i64 0 }, ptr %a265 + 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 %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: + 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: ret void } @@ -27001,12 +27056,12 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1678, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1682, 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.1683, 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 @@ -27017,7 +27072,7 @@ entry: call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t20, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1680, i64 6, i64 0 }, ptr %a23 + 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 @@ -27029,7 +27084,7 @@ entry: call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1681, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1685, i64 1, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t36) @@ -27196,118 +27251,118 @@ entry: call void @finch_str_copy(ptr %a9, ptr %a8) %t10 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1682, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1686, 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: + 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 %then2681, label %else2682 -then2681: + 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.1684, i64 29, i64 0 }, ptr %a19 + 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.1685, i64 6, i64 0 }, ptr %a24 + 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.1686, i64 3, i64 0 }) + %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.1687, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1691, i64 1, i64 0 }, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.emit(ptr %t16, { ptr, i64, i64 } %t38) - br label %endif2683 -else2682: + 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 %then2684, label %else2685 -then2684: + 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.1688, i64 30, i64 0 }, ptr %a44 + 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.1689, i64 6, i64 0 }, ptr %a49 + 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.1690, i64 3, i64 0 }) + %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.1691, i64 1, i64 0 }, ptr %a62 + 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 %endif2686 -else2685: + 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 %then2687, label %else2688 -then2687: + 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.1692, i64 31, i64 0 }, ptr %a69 + 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 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1693, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1697, i64 9, i64 0 }, ptr %a74 call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) %t75 = load { ptr, i64, i64 }, ptr %a72 %t76 = load ptr, ptr %a1 %t77 = load { ptr, i64, i64 }, ptr %a3 %t78 = load %S.ast.Type, ptr %a4 - %t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1694, i64 5, i64 0 }) + %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.1695, i64 1, i64 0 }, ptr %a87 + 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 %endif2689 -else2688: + br label %endif2696 +else2695: %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 + 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 %then2690, label %else2691 -then2690: + 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.1697, i64 30, i64 0 }, ptr %a97 + 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.1698, i64 5, i64 0 }, ptr %a102 + 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 @@ -27316,7 +27371,7 @@ then2690: 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 + 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 @@ -27325,37 +27380,37 @@ then2690: 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 + 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 %endif2692 -else2691: + br label %endif2699 +else2698: %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 + 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 %then2693, label %else2694 -then2693: + 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.1702, i64 30, i64 0 }, ptr %a130 + 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.1703, i64 6, i64 0 }, ptr %a135 + 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.1704, i64 8, i64 0 }, ptr %a140 + 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.1705, i64 7, i64 0 }, ptr %a145 + 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) @@ -27364,27 +27419,27 @@ then2693: 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 + 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 %endif2695 -else2694: + br label %endif2702 +else2701: %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 + 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 %then2696, label %else2697 -then2696: + 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.1708, i64 29, i64 0 }, ptr %a164 + 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.1709, i64 6, i64 0 }, ptr %a169 + 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 @@ -27404,7 +27459,7 @@ then2696: 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 + 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 @@ -27413,41 +27468,41 @@ then2696: 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 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a198 call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 call void @finch.gen.emit(ptr %t161, { ptr, i64, i64 } %t199) - br label %endif2698 -else2697: + br label %endif2705 +else2704: %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 + 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.from2699 -logic.from2699: - br i1 %t204, label %logic.end2701, label %logic.rhs2700 -logic.rhs2700: + 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.1713, i64 4, i64 0 }, ptr %a207 + 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.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: + 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.1714, i64 29, i64 0 }, ptr %a214 + 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.1715, i64 6, i64 0 }, ptr %a219 + 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 @@ -27456,22 +27511,22 @@ then2703: 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 + 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 %endif2705 -else2704: + 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.1717, i64 10, i64 0 }, ptr %a235 + 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.1718, i64 5, i64 0 }, ptr %a240 + 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 @@ -27480,7 +27535,7 @@ else2704: 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 + 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 @@ -27500,24 +27555,24 @@ else2704: 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 + 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 %endif2698 -endif2698: - br label %endif2695 -endif2695: - br label %endif2692 -endif2692: - br label %endif2689 -endif2689: - br label %endif2686 -endif2686: - br label %endif2683 -endif2683: + br label %endif2702 +endif2702: + br label %endif2699 +endif2699: + br label %endif2696 +endif2696: + br label %endif2693 +endif2693: + br label %endif2690 +endif2690: ret void } @@ -27704,37 +27759,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1721, i64 14, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1725, 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) + br i1 %t11, label %panic2713, label %ok2714 +panic2713: + call void @finch_panic(ptr @.str.1726, i64 965, ptr @.str.1727) unreachable -ok2707: +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 %then2708, label %endif2710 -then2708: + 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 -endif2710: +endif2717: %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) + br i1 %t21, label %panic2718, label %ok2719 +panic2718: + call void @finch_panic(ptr @.str.1728, i64 968, ptr @.str.1729) unreachable -ok2712: +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 @@ -27754,20 +27809,20 @@ ok2712: %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 + 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 %then2713, label %else2714 -then2713: + 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 %range2716, label %inrange2717 -range2716: - call void @finch_panic_index(ptr @.str.1727, i64 971, i64 0, i64 %t43) + br i1 %t44, label %range2723, label %inrange2724 +range2723: + call void @finch_panic_index(ptr @.str.1731, i64 971, i64 0, i64 %t43) unreachable -inrange2717: +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 @@ -27776,43 +27831,43 @@ inrange2717: %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 }) + %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.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) + %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 %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 }) + 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.1734, i64 3, i64 0 }) + %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.1735, i64 4, i64 0 }) + %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 %range2718, label %inrange2719 -range2718: - call void @finch_panic_index(ptr @.str.1737, i64 978, i64 3, i64 %t73) + br i1 %t74, label %range2725, label %inrange2726 +range2725: + call void @finch_panic_index(ptr @.str.1741, i64 978, i64 3, i64 %t73) unreachable -inrange2719: +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.1736, i64 13, i64 0 }, ptr %a79 + 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.1738, i64 3, i64 0 }, ptr %a84 + 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) @@ -27826,7 +27881,7 @@ inrange2719: %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 }) + 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 }) %t95 = load ptr, ptr %a1 %t96 = load { ptr, i64, i64 }, ptr %a70 call void @finch.gen.br(ptr %t95, { ptr, i64, i64 } %t96) @@ -27837,12 +27892,12 @@ inrange2719: %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 } { 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.1742, i64 6, i64 0 }, ptr %a109 + 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 @@ -27851,17 +27906,17 @@ inrange2719: 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 + 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 %range2720, label %inrange2721 -range2720: - call void @finch_panic_index(ptr @.str.1744, i64 984, i64 3, i64 %t121) + br i1 %t122, label %range2727, label %inrange2728 +range2727: + call void @finch_panic_index(ptr @.str.1748, i64 984, i64 3, i64 %t121) unreachable -inrange2721: +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 @@ -27879,29 +27934,29 @@ inrange2721: %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) + 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) %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: + 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.1748, i64 4, i64 0 }, ptr %a146 + 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 %then2722, label %else2723 -then2722: + br i1 %t148, label %then2729, label %else2730 +then2729: %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) + br i1 %t150, label %panic2732, label %ok2733 +panic2732: + call void @finch_panic(ptr @.str.1753, i64 990, ptr @.str.1754) unreachable -ok2726: +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 @@ -27912,11 +27967,11 @@ ok2726: %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) + br i1 %t160, label %range2734, label %inrange2735 +range2734: + call void @finch_panic_index(ptr @.str.1755, i64 990, i64 %t157, i64 %t159) unreachable -inrange2728: +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 @@ -27925,13 +27980,13 @@ inrange2728: %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 }) + %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.1754, i64 10, i64 0 }) + %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.1755, i64 9, i64 0 }) + %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 @@ -27939,15 +27994,15 @@ inrange2728: %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: + br label %for.cond2736 +for.cond2736: %t183 = load i64, ptr %a182 %t184 = icmp slt i64 %t183, %t181 - br i1 %t184, label %for.body2730, label %for.end2732 -for.body2730: + 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.1756, i64 6, i64 0 }) + %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)) @@ -27961,33 +28016,33 @@ for.body2730: %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) + br i1 %t197, label %range2740, label %inrange2741 +range2740: + call void @finch_panic_index(ptr @.str.1762, i64 998, i64 %t194, i64 %t196) unreachable -inrange2734: +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.1757, i64 4, i64 0 }, ptr %a204 + 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.1759, i64 9, i64 0 }, ptr %a209 + 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 %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1760, i64 998, i64 %t211, i64 %t213) + br i1 %t214, label %range2742, label %inrange2743 +range2742: + call void @finch_panic_index(ptr @.str.1764, i64 998, i64 %t211, i64 %t213) unreachable -inrange2736: +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 @@ -28002,21 +28057,21 @@ inrange2736: %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: + br label %for.step2738 +for.step2738: %t226 = load i64, ptr %a182 %t227 = add i64 %t226, 1 store i64 %t227, ptr %a182 - br label %for.cond2729 -for.end2732: + br label %for.cond2736 +for.end2739: %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 } { 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.1762, i64 9, i64 0 }, ptr %a236 + 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 @@ -28025,11 +28080,11 @@ for.end2732: 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 + 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.1764, i64 1, i64 0 }, ptr %a248 + 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 @@ -28037,39 +28092,39 @@ for.end2732: 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 + 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 %panic2737, label %ok2738 -panic2737: - call void @finch_panic(ptr @.str.1766, i64 1001, ptr @.str.1767) + br i1 %t260, label %panic2744, label %ok2745 +panic2744: + call void @finch_panic(ptr @.str.1770, i64 1001, ptr @.str.1771) unreachable -ok2738: +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.cond2739 -for.cond2739: + br label %for.cond2746 +for.cond2746: %t266 = load i64, ptr %a265 %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body2740, label %for.end2742 -for.body2740: + 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 %range2743, label %inrange2744 -range2743: - call void @finch_panic_index(ptr @.str.1768, i64 1003, i64 %t269, i64 %t271) + br i1 %t272, label %range2750, label %inrange2751 +range2750: + call void @finch_panic_index(ptr @.str.1772, i64 1003, i64 %t269, i64 %t271) unreachable -inrange2744: +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 @@ -28080,25 +28135,25 @@ inrange2744: %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) + br i1 %t281, label %range2752, label %inrange2753 +range2752: + call void @finch_panic_index(ptr @.str.1774, i64 1004, i64 %t278, i64 %t280) unreachable -inrange2746: +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.1769, i64 4, i64 0 }, { ptr, i64, i64 } %t284) + 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.step2741 -for.step2741: + br label %for.step2748 +for.step2748: %t287 = load i64, ptr %a265 %t288 = add i64 %t287, 1 store i64 %t288, ptr %a265 - br label %for.cond2739 -for.end2742: + 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) @@ -28106,72 +28161,72 @@ for.end2742: %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 + 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.1771, i64 4, i64 0 }, { ptr, i64, i64 } %t297) + 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.1774, i64 9, i64 0 }, ptr %a302 + 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.1775, i64 7, i64 0 }, ptr %a307 + 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.1773, i64 39, i64 0 }, ptr %a311 + 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.1776, i64 1, i64 0 }, ptr %a316 + 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) %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 }) + 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 %endif2724 -else2723: + 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.1779, i64 3, i64 0 }, ptr %a326 + 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 %then2747, label %else2748 -then2747: + 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.1780, i64 2, i64 0 }) + %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.1781, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1782, i64 4, i64 0 }, { ptr, i64, i64 } %t333) + 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.1783, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }) + 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.1786, i64 23, i64 0 }, ptr %a341 + 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.1787, i64 22, i64 0 }, ptr %a346 + 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.1785, i64 3, i64 0 }, { ptr, i64, i64 } %t348) + %t349 = call { ptr, i64, i64 } @finch.gen.load(ptr %t335, { ptr, i64, i64 } { ptr @.str.1789, i64 3, i64 0 }, { ptr, i64, i64 } %t348) store { ptr, i64, i64 } %t349, ptr %a350 %t351 = load ptr, ptr %a1 %t352 = load { ptr, i64, i64 }, ptr %a350 @@ -28182,21 +28237,21 @@ then2747: %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) + br i1 %t359, label %range2757, label %inrange2758 +range2757: + call void @finch_panic_index(ptr @.str.1793, i64 1020, i64 3, i64 %t358) unreachable -inrange2751: +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.1788, i64 2, i64 0 }, %S.ast.Type %t356, { ptr, i64, i64 } %t362) + %t363 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t355, { ptr, i64, i64 } { ptr @.str.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.1790, i64 10, i64 0 }) + %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.1791, i64 10, i64 0 }) + %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 @@ -28205,13 +28260,13 @@ inrange2751: %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 + %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.1794, i64 3, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.1798, i64 3, i64 0 }, ptr %a385 call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) %t386 = load { ptr, i64, i64 }, ptr %a383 %t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t386) @@ -28222,15 +28277,15 @@ inrange2751: %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 }) + %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.1796, i64 4, i64 0 }) + %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.1797, i64 2, i64 0 }, { ptr, i64, i64 } %t400) + %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) @@ -28238,7 +28293,7 @@ inrange2751: %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 }) + 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) @@ -28247,7 +28302,7 @@ inrange2751: 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) + 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 @@ -28255,11 +28310,11 @@ inrange2751: %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) + br i1 %t419, label %range2759, label %inrange2760 +range2759: + call void @finch_panic_index(ptr @.str.1807, i64 1033, i64 0, i64 %t418) unreachable -inrange2753: +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 @@ -28273,17 +28328,17 @@ inrange2753: %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) + br i1 %t432, label %range2761, label %inrange2762 +range2761: + call void @finch_panic_index(ptr @.str.1808, i64 1033, i64 0, i64 %t431) unreachable -inrange2755: +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.1802, i64 4, i64 0 }, { ptr, i64, i64 } %t428, %S.ast.Type %t435, i1 true) + call void @finch.gen.emitFormat(ptr %t413, { ptr, i64, i64 } { ptr @.str.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.1805, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1806, i64 2, i64 0 }) + 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 %t439 = load ptr, ptr %a1 @@ -28291,11 +28346,11 @@ inrange2755: %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) + br i1 %t443, label %range2763, label %inrange2764 +range2763: + call void @finch_panic_index(ptr @.str.1812, i64 1035, i64 1, i64 %t442) unreachable -inrange2757: +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 @@ -28309,15 +28364,15 @@ inrange2757: %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) + br i1 %t456, label %range2765, label %inrange2766 +range2765: + call void @finch_panic_index(ptr @.str.1813, i64 1035, i64 1, i64 %t455) unreachable -inrange2759: +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.1807, i64 4, i64 0 }, { ptr, i64, i64 } %t452, %S.ast.Type %t459, i1 true) + call void @finch.gen.emitFormat(ptr %t437, { ptr, i64, i64 } { ptr @.str.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) @@ -28328,16 +28383,16 @@ inrange2759: %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: + 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 %panic2760, label %ok2761 -panic2760: - call void @finch_panic(ptr @.str.1812, i64 1041, ptr @.str.1813) + br i1 %t468, label %panic2767, label %ok2768 +panic2767: + call void @finch_panic(ptr @.str.1816, i64 1041, ptr @.str.1817) unreachable -ok2761: +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 @@ -28348,11 +28403,11 @@ ok2761: %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) + br i1 %t478, label %range2769, label %inrange2770 +range2769: + call void @finch_panic_index(ptr @.str.1818, i64 1041, i64 %t475, i64 %t477) unreachable -inrange2763: +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 @@ -28368,28 +28423,28 @@ inrange2763: %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 + 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.1815, i64 4, i64 0 }, { ptr, i64, i64 } %t496) + 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.cond2764 -for.cond2764: + br label %for.cond2771 +for.cond2771: %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 + 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 %then2768, label %endif2770 -then2768: - store { ptr, i64, i64 } { ptr @.str.1818, i64 0, i64 0 }, ptr %a503 - br label %endif2770 -endif2770: + 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 @@ -28397,11 +28452,11 @@ endif2770: %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) + br i1 %t512, label %range2778, label %inrange2779 +range2778: + call void @finch_panic_index(ptr @.str.1824, i64 1049, i64 %t509, i64 %t511) unreachable -inrange2772: +inrange2779: %t513 = extractvalue { ptr, i64, i64 } %t510, 0 %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509 %t515 = load { ptr, i64, i64 }, ptr %t514 @@ -28410,18 +28465,18 @@ inrange2772: 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 + 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.1819, i64 4, i64 0 }, { ptr, i64, i64 } %t523) + 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.1822, i64 23, i64 0 }, ptr %a527 + 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.1823, i64 21, i64 0 }, ptr %a532 + 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 @@ -28429,11 +28484,11 @@ inrange2772: %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) + br i1 %t538, label %range2780, label %inrange2781 +range2780: + call void @finch_panic_index(ptr @.str.1828, i64 1050, i64 %t535, i64 %t537) unreachable -inrange2774: +inrange2781: %t539 = extractvalue { ptr, i64, i64 } %t536, 0 %t540 = getelementptr inbounds i64, ptr %t539, i64 %t535 %t541 = load i64, ptr %t540 @@ -28453,11 +28508,11 @@ inrange2774: %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) + br i1 %t557, label %range2782, label %inrange2783 +range2782: + call void @finch_panic_index(ptr @.str.1830, i64 1051, i64 %t554, i64 %t556) unreachable -inrange2776: +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 @@ -28469,41 +28524,41 @@ inrange2776: %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) + br i1 %t568, label %range2784, label %inrange2785 +range2784: + call void @finch_panic_index(ptr @.str.1831, i64 1051, i64 %t565, i64 %t567) unreachable -inrange2778: +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.1825, i64 4, i64 0 }, { ptr, i64, i64 } %t563, %S.ast.Type %t571, i1 true) - br label %for.step2766 -for.step2766: + 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.cond2764 -for.end2767: + br label %for.cond2771 +for.end2774: %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: + 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.1830, i64 8, i64 0 }) + 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.1831, i64 21, i64 0 }, ptr %a580 + 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.1832, i64 18, i64 0 }, ptr %a585 + 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) @@ -28582,29 +28637,29 @@ 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 %then2786, label %endif2788 +then2786: %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: +endif2788: %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 %then2789, label %endif2791 +then2789: %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.1837, 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 + 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 @@ -28613,7 +28668,7 @@ then2782: 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 + 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 @@ -28625,21 +28680,21 @@ then2782: %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: +endif2791: %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: + 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.1836, i64 5, i64 0 }, ptr %a57 + 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.1837, i64 1, i64 0 }, ptr %a62 + 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 @@ -28648,7 +28703,7 @@ then2785: 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 + 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 @@ -28660,17 +28715,17 @@ then2785: %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: +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.1839, i64 5, i64 0 }, ptr %a86 + 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.1840, i64 1, i64 0 }, ptr %a91 + 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 @@ -28679,7 +28734,7 @@ endif2787: 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 + 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 @@ -28745,31 +28800,31 @@ entry: store { ptr, i64, i64 } %t8, ptr %a10 %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br i1 %t12, label %then2788, label %endif2790 -then2788: + br i1 %t12, label %then2795, label %endif2797 +then2795: %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: +endif2797: %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 %then2798, label %endif2800 +then2798: %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.1846, 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 + 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 @@ -28778,7 +28833,7 @@ then2791: 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 + 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 @@ -28790,17 +28845,17 @@ then2791: %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: +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.1845, i64 8, i64 0 }, ptr %a56 + 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.1846, i64 1, i64 0 }, ptr %a61 + 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 @@ -28809,7 +28864,7 @@ endif2793: 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 + 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 @@ -28865,18 +28920,18 @@ entry: store %S.ast.Type %p3, ptr %a4 %t5 = load %S.ast.Type, ptr %a3 %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then2794, label %endif2796 -then2794: + br i1 %t6, label %then2801, label %endif2803 +then2801: %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.1852, 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 + 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 @@ -28885,7 +28940,7 @@ then2794: 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 + 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 @@ -28897,17 +28952,17 @@ then2794: %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: +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.1851, i64 7, i64 0 }, ptr %a41 + 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.1852, i64 1, i64 0 }, ptr %a46 + 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 @@ -28916,7 +28971,7 @@ endif2796: 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 + 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 @@ -29051,97 +29106,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 %then2804, label %endif2806 +then2804: %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: +endif2806: %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.1858, 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.from2807 +logic.from2807: + br i1 %t20, label %logic.rhs2808, label %logic.end2809 +logic.rhs2808: %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.1859, 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.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 %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: +endif2813: %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.1861, 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.from2814 +logic.from2814: + br i1 %t40, label %logic.rhs2815, label %logic.end2816 +logic.rhs2815: %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.1862, 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.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: %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.from2821 +logic.from2821: + br i1 %t52, label %logic.end2823, label %logic.rhs2822 +logic.rhs2822: %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.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: %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 @@ -29154,42 +29209,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: +endif2828: %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: - %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: - %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 + br i1 %t72, label %logic.rhs2830, label %logic.end2831 logic.rhs2830: + %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: + %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: %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.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: %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 @@ -29203,13 +29258,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: +endif2842: %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 %then2843, label %endif2845 +then2843: %t101 = load ptr, ptr %a1 %t102 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t103 = load { ptr, i64, i64 }, ptr %t102 @@ -29224,21 +29279,21 @@ 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: +endif2845: %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 %then2846, label %endif2848 +then2846: %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.1863, 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.1864, 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 @@ -29248,49 +29303,49 @@ then2839: 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: + 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.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 + br i1 %t136, 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 + %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: - %t148 = phi i1 [ false, %logic.from2849 ], [ %t147, %logic.rend2852 ] - br i1 %t148, label %then2853, label %endif2855 + %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.1862, i64 2, i64 0 }, ptr %a153 + 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 @@ -29301,7 +29356,7 @@ then2853: %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: +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 @@ -29316,31 +29371,31 @@ endif2855: %t173 = load %S.ast.Type, ptr %a172 %t174 = insertvalue %S.gen.Val %t169, %S.ast.Type %t173, 1 ret %S.gen.Val %t174 -endif2848: +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.1863, i64 3, i64 0 }, ptr %a179 + 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.from2856 -logic.from2856: - br i1 %t181, label %logic.rhs2857, label %logic.end2858 -logic.rhs2857: + 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.1864, i64 5, i64 0 }, ptr %a185 + 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.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: + 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 @@ -29355,42 +29410,42 @@ then2860: %t200 = load %S.ast.Type, ptr %a199 %t201 = insertvalue %S.gen.Val %t196, %S.ast.Type %t200, 1 ret %S.gen.Val %t201 -endif2862: +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.1865, i64 5, i64 0 }, ptr %a206 + 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.from2863 -logic.from2863: - br i1 %t208, label %logic.rhs2864, label %logic.end2865 -logic.rhs2864: + 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.1866, i64 3, i64 0 }, ptr %a212 + 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.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: + 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.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: + 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 @@ -29405,10 +29460,10 @@ then2871: %t230 = load %S.ast.Type, ptr %a229 %t231 = insertvalue %S.gen.Val %t226, %S.ast.Type %t230, 1 ret %S.gen.Val %t231 -endif2873: +endif2880: %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 + 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 @@ -29418,7 +29473,7 @@ endif2873: 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 } { ptr @.str.1872, i64 14, i64 0 }, ptr %a245 call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 %t247 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 @@ -29432,22 +29487,22 @@ endif2873: %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: + 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.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: + 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.1869, i64 6, i64 0 }, ptr %a264 + 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 @@ -29457,102 +29512,102 @@ then2878: 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 + 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.from2881 -logic.from2881: - br i1 %t278, label %logic.rhs2882, label %logic.end2883 -logic.rhs2882: + 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.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: + 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 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1871, i64 26, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1875, i64 26, i64 0 }, ptr %a285 call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) %t286 = load { ptr, i64, i64 }, ptr %a283 store { ptr, i64, i64 } %t286, ptr %a254 - br label %endif2887 -endif2887: + br label %endif2894 +endif2894: %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 + 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 %endif2880 -endif2880: + 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.1873, i64 3, i64 0 }, ptr %a295 + 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.from2888 -logic.from2888: - br i1 %t297, label %logic.rhs2889, label %logic.end2890 -logic.rhs2889: + 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.from2891 -logic.from2891: - br i1 %t300, label %logic.end2893, label %logic.rhs2892 -logic.rhs2892: + 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.1874, i64 4, i64 0 }, ptr %a305 + 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.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: + 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 %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.1879, i64 4, i64 0 }, ptr %a313 %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) %t315 = icmp ne i32 %t314, 0 - br label %logic.rend2898 -logic.rend2898: + 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: - %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: + %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.1876, i64 34, i64 0 }, ptr %a321 + 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 %endif2902 -endif2902: + br label %endif2909 +endif2909: %t323 = load ptr, ptr %a1 %t324 = load %S.ast.Node, ptr %a4 %t325 = load { ptr, i64, i64 }, ptr %a254 @@ -29577,28 +29632,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 %panic2910, label %ok2911 +panic2910: + call void @finch_panic(ptr @.str.1881, i64 1148, ptr @.str.1882) unreachable -ok2904: +ok2911: %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.cond2912 +for.cond2912: %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.body2913, label %for.end2915 +for.body2913: %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 %panic2916, label %ok2917 +panic2916: + call void @finch_panic(ptr @.str.1883, i64 1149, ptr @.str.1884) unreachable -ok2910: +ok2917: %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 @@ -29608,50 +29663,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 %panic2918, label %ok2919 +panic2918: + call void @finch_panic(ptr @.str.1885, i64 1150, ptr @.str.1886) unreachable -ok2912: +ok2919: %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 %range2920, label %inrange2921 +range2920: + call void @finch_panic_index(ptr @.str.1887, i64 1150, i64 %t23, i64 %t25) unreachable -inrange2914: +inrange2921: %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.cond2922 +for.cond2922: %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.body2923, label %for.end2925 +for.body2923: %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 %panic2926, label %ok2927 +panic2926: + call void @finch_panic(ptr @.str.1888, i64 1151, ptr @.str.1889) unreachable -ok2920: +ok2927: %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 %range2928, label %inrange2929 +range2928: + call void @finch_panic_index(ptr @.str.1890, i64 1151, i64 %t38, i64 %t40) unreachable -inrange2922: +inrange2929: %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 @@ -29659,11 +29714,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 %range2930, label %inrange2931 +range2930: + call void @finch_panic_index(ptr @.str.1891, i64 1151, i64 %t45, i64 %t47) unreachable -inrange2924: +inrange2931: %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 @@ -29673,38 +29728,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 %then2932, label %endif2934 +then2932: %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 %panic2935, label %ok2936 +panic2935: + call void @finch_panic(ptr @.str.1892, i64 1152, ptr @.str.1893) unreachable -ok2929: +ok2936: %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 42 %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.from2937 +logic.from2937: + br i1 %t61, label %logic.rhs2938, label %logic.end2939 +logic.rhs2938: %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 %panic2940, label %ok2941 +panic2940: + call void @finch_panic(ptr @.str.1894, i64 1152, ptr @.str.1895) unreachable -ok2934: +ok2941: %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 %range2942, label %inrange2943 +range2942: + call void @finch_panic_index(ptr @.str.1896, i64 1152, i64 %t65, i64 %t67) unreachable -inrange2936: +inrange2943: %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 @@ -29712,54 +29767,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 %range2944, label %inrange2945 +range2944: + call void @finch_panic_index(ptr @.str.1897, i64 1152, i64 %t72, i64 %t74) unreachable -inrange2938: +inrange2945: %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 %panic2946, label %ok2947 +panic2946: + call void @finch_panic(ptr @.str.1898, i64 1152, ptr @.str.1899) unreachable -ok2940: +ok2947: %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 43 %t83 = load i64, ptr %t82 %t84 = icmp sge i64 %t79, %t83 - br label %logic.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.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: %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: +endif2934: + br label %for.step2924 +for.step2924: %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.cond2922 +for.end2925: + br label %for.step2914 +for.step2914: %t92 = load i64, ptr %a8 %t93 = add i64 %t92, 1 store i64 %t93, ptr %a8 - br label %for.cond2905 -for.end2908: + br label %for.cond2912 +for.end2915: ret i64 -1 } @@ -29793,22 +29848,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 %panic2952, label %ok2953 +panic2952: + call void @finch_panic(ptr @.str.1900, i64 1163, ptr @.str.1901) unreachable -ok2946: +ok2953: %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 %range2954, label %inrange2955 +range2954: + call void @finch_panic_index(ptr @.str.1902, i64 1163, i64 %t7, i64 %t9) unreachable -inrange2948: +inrange2955: %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 @@ -29817,11 +29872,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 %range2956, label %inrange2957 +range2956: + call void @finch_panic_index(ptr @.str.1903, i64 1163, i64 %t15, i64 %t17) unreachable -inrange2950: +inrange2957: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.Var, ptr %t19, i64 %t15 %t21 = load %S.gen.Var, ptr %t20 @@ -29846,38 +29901,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 %panic2958, label %ok2959 +panic2958: + call void @finch_panic(ptr @.str.1904, i64 1167, ptr @.str.1905) unreachable -ok2952: +ok2959: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load i64, ptr %t7 store i64 0, ptr %a9 - br label %for.cond2953 -for.cond2953: + br label %for.cond2960 +for.cond2960: %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.body2961, label %for.end2963 +for.body2961: %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 %panic2964, label %ok2965 +panic2964: + call void @finch_panic(ptr @.str.1906, i64 1168, ptr @.str.1907) unreachable -ok2958: +ok2965: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14 %t15 = load i64, ptr %a9 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2959, label %inrange2960 -range2959: - call void @finch_panic_index(ptr @.str.1904, i64 1168, i64 %t15, i64 %t17) + br i1 %t18, label %range2966, label %inrange2967 +range2966: + call void @finch_panic_index(ptr @.str.1908, i64 1168, i64 %t15, i64 %t17) unreachable -inrange2960: +inrange2967: %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 @@ -29887,27 +29942,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.from2968 +logic.from2968: + br i1 %t27, label %logic.rhs2969, label %logic.end2970 +logic.rhs2969: %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 %panic2971, label %ok2972 +panic2971: + call void @finch_panic(ptr @.str.1909, i64 1168, ptr @.str.1910) unreachable -ok2965: +ok2972: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14 %t31 = load i64, ptr %a9 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2966, label %inrange2967 -range2966: - call void @finch_panic_index(ptr @.str.1907, i64 1168, i64 %t31, i64 %t33) + br i1 %t34, label %range2973, label %inrange2974 +range2973: + call void @finch_panic_index(ptr @.str.1911, i64 1168, i64 %t31, i64 %t33) unreachable -inrange2967: +inrange2974: %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 @@ -29917,55 +29972,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.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: %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 %panic2979, label %ok2980 +panic2979: + call void @finch_panic(ptr @.str.1912, i64 1168, ptr @.str.1913) unreachable -ok2973: +ok2980: %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14 %t48 = load i64, ptr %a9 %t49 = load { ptr, i64, i64 }, ptr %t47 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range2974, label %inrange2975 -range2974: - call void @finch_panic_index(ptr @.str.1910, i64 1168, i64 %t48, i64 %t50) + br i1 %t51, label %range2981, label %inrange2982 +range2981: + call void @finch_panic_index(ptr @.str.1914, i64 1168, i64 %t48, i64 %t50) unreachable -inrange2975: +inrange2982: %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.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: %t59 = load i64, ptr %a9 ret i64 %t59 -endif2979: - br label %for.step2955 -for.step2955: +endif2986: + br label %for.step2962 +for.step2962: %t60 = load i64, ptr %a9 %t61 = add i64 %t60, 1 store i64 %t61, ptr %a9 - br label %for.cond2953 -for.end2956: + br label %for.cond2960 +for.end2963: ret i64 -1 } @@ -29988,38 +30043,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 %panic2987, label %ok2988 +panic2987: + call void @finch_panic(ptr @.str.1915, i64 1176, ptr @.str.1916) unreachable -ok2981: +ok2988: %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 %t9 = load i64, ptr %t8 store i64 0, ptr %a10 - br label %for.cond2982 -for.cond2982: + br label %for.cond2989 +for.cond2989: %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.body2990, label %for.end2992 +for.body2990: %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 %panic2993, label %ok2994 +panic2993: + call void @finch_panic(ptr @.str.1917, i64 1177, ptr @.str.1918) unreachable -ok2987: +ok2994: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14 %t16 = load i64, ptr %a10 %t17 = load { ptr, i64, i64 }, ptr %t15 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range2988, label %inrange2989 -range2988: - call void @finch_panic_index(ptr @.str.1915, i64 1177, i64 %t16, i64 %t18) + br i1 %t19, label %range2995, label %inrange2996 +range2995: + call void @finch_panic_index(ptr @.str.1919, i64 1177, i64 %t16, i64 %t18) unreachable -inrange2989: +inrange2996: %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 @@ -30029,27 +30084,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.from2997 +logic.from2997: + br i1 %t28, label %logic.rhs2998, label %logic.end2999 +logic.rhs2998: %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 %panic3000, label %ok3001 +panic3000: + call void @finch_panic(ptr @.str.1920, i64 1177, ptr @.str.1921) unreachable -ok2994: +ok3001: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14 %t32 = load i64, ptr %a10 %t33 = load { ptr, i64, i64 }, ptr %t31 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range2995, label %inrange2996 -range2995: - call void @finch_panic_index(ptr @.str.1918, i64 1177, i64 %t32, i64 %t34) + br i1 %t35, label %range3002, label %inrange3003 +range3002: + call void @finch_panic_index(ptr @.str.1922, i64 1177, i64 %t32, i64 %t34) unreachable -inrange2996: +inrange3003: %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 @@ -30059,32 +30114,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.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: %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 %panic3008, label %ok3009 +panic3008: + call void @finch_panic(ptr @.str.1923, i64 1177, ptr @.str.1924) unreachable -ok3002: +ok3009: %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14 %t49 = load i64, ptr %a10 %t50 = load { ptr, i64, i64 }, ptr %t48 %t51 = extractvalue { ptr, i64, i64 } %t50, 1 %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3003, label %inrange3004 -range3003: - call void @finch_panic_index(ptr @.str.1921, i64 1177, i64 %t49, i64 %t51) + br i1 %t52, label %range3010, label %inrange3011 +range3010: + call void @finch_panic_index(ptr @.str.1925, i64 1177, i64 %t49, i64 %t51) unreachable -inrange3004: +inrange3011: %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 @@ -30094,23 +30149,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.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: %t63 = load i64, ptr %a10 ret i64 %t63 -endif3008: - br label %for.step2984 -for.step2984: +endif3015: + br label %for.step2991 +for.step2991: %t64 = load i64, ptr %a10 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a10 - br label %for.cond2982 -for.end2985: + br label %for.cond2989 +for.end2992: ret i64 -1 } @@ -30126,61 +30181,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.1926, 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.1927, 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.1928, 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.1929, 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.1930, 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.1931, 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.1932, 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.1933, 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.1934, 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.1935, 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.1936, 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.1937, 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.1938, 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.1939, 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.1940, 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.1941, 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.1942, 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.1943, 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.1944, 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.1945, 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.1946, 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.1947, 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.1948, 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.1949, 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.1950, 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.1951, 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.1952, 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.1953, 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 @@ -30191,27 +30246,27 @@ 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.cond3016 +find.cond3016: %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.body3017, label %find.end3020 +find.body3017: %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.hit3018, label %find.next3019 +find.hit3018: store i64 %t42, ptr %a38 - br label %find.end3013 -find.next3012: + br label %find.end3020 +find.next3019: %t50 = add i64 %t42, 1 store i64 %t50, ptr %a41 - br label %find.cond3009 -find.end3013: + br label %find.cond3016 +find.end3020: %t51 = load i64, ptr %a38 %t52 = icmp sge i64 %t51, 0 ret i1 %t52 @@ -30335,83 +30390,83 @@ entry: %t8 = load { ptr, i64, i64 }, ptr %a3 %t9 = call i64 @finch.gen.lookup(ptr %t7, { ptr, i64, i64 } %t8) %t10 = icmp sge i64 %t9, 0 - br label %logic.from3014 -logic.from3014: - br i1 %t10, label %logic.rhs3015, label %logic.end3016 -logic.rhs3015: + 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.1950, i64 3, i64 0 }, ptr %a13 + 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.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: + 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.1951, i64 18, i64 0 }, ptr %a21 + 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.1952, i64 21, i64 0 }, ptr %a26 + 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 %endif3020 -endif3020: + br label %endif3027 +endif3027: %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) + br i1 %t30, label %panic3028, label %ok3029 +panic3028: + call void @finch_panic(ptr @.str.1957, i64 1195, ptr @.str.1958) unreachable -ok3022: +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 %then3023, label %endif3025 -then3023: + 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.1955, i64 1, i64 0 }, ptr %a40 + 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.1956, i64 35, i64 0 }, ptr %a45 + 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 %endif3025 -endif3025: + 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 %then3026, label %endif3028 -then3026: + 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.1957, i64 1, i64 0 }, ptr %a53 + 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.1958, i64 38, i64 0 }, ptr %a58 + 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 %endif3028 -endif3028: + br label %endif3035 +endif3035: %t60 = load ptr, ptr %a1 %t61 = load ptr, ptr %a1 %t62 = load %S.ast.Type, ptr %a4 @@ -30427,19 +30482,19 @@ endif3028: 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) + br i1 %t73, label %panic3036, label %ok3037 +panic3036: + call void @finch_panic(ptr @.str.1963, i64 1203, ptr @.str.1964) unreachable -ok3030: +ok3037: %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 10 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3031, label %ok3032 -panic3031: - call void @finch_panic(ptr @.str.1961, i64 1203, ptr @.str.1962) + br i1 %t76, label %panic3038, label %ok3039 +panic3038: + call void @finch_panic(ptr @.str.1965, i64 1203, ptr @.str.1966) unreachable -ok3032: +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 @@ -30447,11 +30502,11 @@ ok3032: %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) + br i1 %t83, label %range3040, label %inrange3041 +range3040: + call void @finch_panic_index(ptr @.str.1967, i64 1203, i64 %t80, i64 %t82) unreachable -inrange3034: +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 @@ -30475,32 +30530,32 @@ inrange3034: %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) + br i1 %t106, label %panic3042, label %ok3043 +panic3042: + call void @finch_panic(ptr @.str.1968, i64 1203, ptr @.str.1969) unreachable -ok3036: +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 %panic3037, label %ok3038 -panic3037: - call void @finch_panic(ptr @.str.1966, i64 1203, ptr @.str.1967) + br i1 %t111, label %panic3044, label %ok3045 +panic3044: + call void @finch_panic(ptr @.str.1970, i64 1203, ptr @.str.1971) unreachable -ok3038: +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 %range3039, label %inrange3040 -range3039: - call void @finch_panic_index(ptr @.str.1968, i64 1203, i64 %t114, i64 %t116) + br i1 %t117, label %range3046, label %inrange3047 +range3046: + call void @finch_panic_index(ptr @.str.1972, i64 1203, i64 %t114, i64 %t116) unreachable -inrange3040: +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 @@ -30523,11 +30578,11 @@ inrange3040: 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) + br i1 %t136, label %panic3048, label %ok3049 +panic3048: + call void @finch_panic(ptr @.str.1973, i64 1204, ptr @.str.1974) unreachable -ok3042: +ok3049: %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 23 %t138 = load i64, ptr %t137 %t139 = add i64 %t138, 1 @@ -30540,91 +30595,91 @@ ok3042: 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) + br i1 %t146, label %panic3050, label %ok3051 +panic3050: + call void @finch_panic(ptr @.str.1975, i64 1206, ptr @.str.1976) unreachable -ok3044: +ok3051: %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: + 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.1973, i64 3, i64 0 }, ptr %a151 + 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.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: + 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.1975, i64 1, i64 0 }, ptr %a158 + 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.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: + 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 %panic3056, label %ok3057 -panic3056: - call void @finch_panic(ptr @.str.1976, i64 1207, ptr @.str.1977) + br i1 %t164, label %panic3063, label %ok3064 +panic3063: + call void @finch_panic(ptr @.str.1980, i64 1207, ptr @.str.1981) unreachable -ok3057: +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 %panic3058, label %ok3059 -panic3058: - call void @finch_panic(ptr @.str.1978, i64 1207, ptr @.str.1979) + br i1 %t167, label %panic3065, label %ok3066 +panic3065: + call void @finch_panic(ptr @.str.1982, i64 1207, ptr @.str.1983) unreachable -ok3059: +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 %range3060, label %inrange3061 -range3060: - call void @finch_panic_index(ptr @.str.1980, i64 1207, i64 %t170, i64 %t172) + br i1 %t173, label %range3067, label %inrange3068 +range3067: + call void @finch_panic_index(ptr @.str.1984, i64 1207, i64 %t170, i64 %t172) unreachable -inrange3061: +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 %panic3062, label %ok3063 -panic3062: - call void @finch_panic(ptr @.str.1981, i64 1207, ptr @.str.1982) + br i1 %t178, label %panic3069, label %ok3070 +panic3069: + call void @finch_panic(ptr @.str.1985, i64 1207, ptr @.str.1986) unreachable -ok3063: +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 %range3064, label %inrange3065 -range3064: - call void @finch_panic_index(ptr @.str.1983, i64 1207, i64 %t181, i64 %t183) + br i1 %t184, label %range3071, label %inrange3072 +range3071: + call void @finch_panic_index(ptr @.str.1987, i64 1207, i64 %t181, i64 %t183) unreachable -inrange3065: +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 @@ -30634,20 +30689,20 @@ inrange3065: 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) + br i1 %t193, label %panic3073, label %ok3074 +panic3073: + call void @finch_panic(ptr @.str.1988, i64 1208, ptr @.str.1989) unreachable -ok3067: +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.1986, i64 3, i64 0 }, ptr %a198 + 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.1987, i64 1, i64 0 }, ptr %a203 + 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 @@ -30657,27 +30712,27 @@ ok3067: 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 + 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 %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 %panic3075, label %ok3076 +panic3075: + call void @finch_panic(ptr @.str.1993, i64 1208, ptr @.str.1994) unreachable -ok3069: +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 %t219 = load i64, ptr %t218 %t220 = load { ptr, i64, i64 }, ptr %t217 %t221 = extractvalue { ptr, i64, i64 } %t220, 1 %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1991, i64 1208, i64 %t219, i64 %t221) + br i1 %t222, label %range3077, label %inrange3078 +range3077: + call void @finch_panic_index(ptr @.str.1995, i64 1208, i64 %t219, i64 %t221) unreachable -inrange3071: +inrange3078: %t223 = extractvalue { ptr, i64, i64 } %t220, 0 %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t219 %t225 = load { ptr, i64, i64 }, ptr %t224 @@ -30686,7 +30741,7 @@ inrange3071: 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 + 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 @@ -30698,7 +30753,7 @@ inrange3071: 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 + 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 @@ -30710,27 +30765,27 @@ inrange3071: 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 + 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 %panic3072, label %ok3073 -panic3072: - call void @finch_panic(ptr @.str.1995, i64 1208, ptr @.str.1996) + br i1 %t259, label %panic3079, label %ok3080 +panic3079: + call void @finch_panic(ptr @.str.1999, i64 1208, ptr @.str.2000) unreachable -ok3073: +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 %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1997, i64 1208, i64 %t262, i64 %t264) + br i1 %t265, label %range3081, label %inrange3082 +range3081: + call void @finch_panic_index(ptr @.str.2001, i64 1208, i64 %t262, i64 %t264) unreachable -inrange3075: +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 @@ -30739,7 +30794,7 @@ inrange3075: 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 + 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 @@ -30751,7 +30806,7 @@ inrange3075: 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 + 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 @@ -30777,12 +30832,12 @@ inrange3075: %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 } { 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.2001, i64 1, i64 0 }, ptr %a315 + 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 @@ -30791,12 +30846,12 @@ inrange3075: 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 + 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.2003, i64 0, i64 0 }, i64 0, i64 0) - br label %endif3055 -endif3055: + 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) @@ -30810,11 +30865,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 %panic3083, label %ok3084 +panic3083: + call void @finch_panic(ptr @.str.2008, i64 1215, ptr @.str.2009) unreachable -ok3077: +ok3084: %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 @@ -30833,20 +30888,20 @@ entry: 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 %panic3085, label %ok3086 +panic3085: + call void @finch_panic(ptr @.str.2010, i64 1219, ptr @.str.2011) unreachable -ok3079: +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 %panic3080, label %ok3081 -panic3080: - call void @finch_panic(ptr @.str.2008, i64 1219, ptr @.str.2009) + br i1 %t7, label %panic3087, label %ok3088 +panic3087: + call void @finch_panic(ptr @.str.2012, i64 1219, ptr @.str.2013) unreachable -ok3081: +ok3088: %t8 = sub i64 %t6, 1 %t9 = load ptr, ptr %t4 %t10 = getelementptr inbounds %S.gen.Scope, ptr %t9, i64 %t8 @@ -30864,20 +30919,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.cond3086 -n.cond3086: + br label %n.cond3093 +n.cond3093: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body3087, label %n.end3088 -n.body3087: + 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.cond3086 -n.end3088: + br label %n.cond3093 +n.end3095: ret void } @@ -30912,21 +30967,21 @@ entry: 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 %panic3089, label %ok3090 +panic3089: + call void @finch_panic(ptr @.str.2014, i64 1224, ptr @.str.2015) unreachable -ok3083: +ok3090: %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 %range3091, label %inrange3092 +range3091: + call void @finch_panic_index(ptr @.str.2016, i64 1224, i64 %t6, i64 %t8) unreachable -inrange3085: +inrange3092: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 %t12 = load %S.gen.Scope, ptr %t11 @@ -30938,42 +30993,42 @@ inrange3085: %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: + br label %while.cond3096 +while.cond3096: %t21 = load i64, ptr %a20 %t22 = icmp sgt i64 %t21, 0 - br i1 %t22, label %while.body3090, label %while.end3091 -while.body3090: + 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 %panic3092, label %ok3093 -panic3092: - call void @finch_panic(ptr @.str.2013, i64 1228, ptr @.str.2014) + br i1 %t26, label %panic3099, label %ok3100 +panic3099: + call void @finch_panic(ptr @.str.2017, i64 1228, ptr @.str.2018) unreachable -ok3093: +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 %panic3094, label %ok3095 -panic3094: - call void @finch_panic(ptr @.str.2015, i64 1229, ptr @.str.2016) + br i1 %t31, label %panic3101, label %ok3102 +panic3101: + call void @finch_panic(ptr @.str.2019, i64 1229, ptr @.str.2020) unreachable -ok3095: +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 %panic3096, label %ok3097 -panic3096: - call void @finch_panic(ptr @.str.2017, i64 1230, ptr @.str.2018) + br i1 %t36, label %panic3103, label %ok3104 +panic3103: + call void @finch_panic(ptr @.str.2021, i64 1230, ptr @.str.2022) unreachable -ok3097: +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 @@ -30981,30 +31036,30 @@ ok3097: %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) + br i1 %t42, label %range3105, label %inrange3106 +range3105: + call void @finch_panic_index(ptr @.str.2023, i64 1231, i64 %t39, i64 %t41) unreachable -inrange3099: +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 %panic3100, label %ok3101 -panic3100: - call void @finch_panic(ptr @.str.2020, i64 1231, ptr @.str.2021) + br i1 %t47, label %panic3107, label %ok3108 +panic3107: + call void @finch_panic(ptr @.str.2024, i64 1231, ptr @.str.2025) unreachable -ok3101: +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 %panic3102, label %ok3103 -panic3102: - call void @finch_panic(ptr @.str.2022, i64 1232, ptr @.str.2023) + br i1 %t50, label %panic3109, label %ok3110 +panic3109: + call void @finch_panic(ptr @.str.2026, i64 1232, ptr @.str.2027) unreachable -ok3103: +ok3110: %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 44 %t52 = load i64, ptr %t51 %t53 = add i64 %t52, 1 @@ -31017,11 +31072,11 @@ ok3103: %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) + br i1 %t60, label %range3111, label %inrange3112 +range3111: + call void @finch_panic_index(ptr @.str.2028, i64 1234, i64 %t57, i64 %t59) unreachable -inrange3105: +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 @@ -31030,11 +31085,11 @@ inrange3105: 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) + br i1 %t66, label %panic3113, label %ok3114 +panic3113: + call void @finch_panic(ptr @.str.2029, i64 1236, ptr @.str.2030) unreachable -ok3107: +ok3114: %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 44 %t68 = load i64, ptr %t67 %t69 = sub i64 %t68, 1 @@ -31042,25 +31097,25 @@ ok3107: %t70 = load i1, ptr %a29 %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 %panic3115, label %ok3116 +panic3115: + call void @finch_panic(ptr @.str.2031, i64 1237, ptr @.str.2032) unreachable -ok3109: +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 %panic3110, label %ok3111 -panic3110: - call void @finch_panic(ptr @.str.2029, i64 1238, ptr @.str.2030) + br i1 %t76, label %panic3117, label %ok3118 +panic3117: + call void @finch_panic(ptr @.str.2033, i64 1238, ptr @.str.2034) unreachable -ok3111: +ok3118: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 43 store i64 %t74, ptr %t77 - br label %while.cond3089 -while.end3091: + br label %while.cond3096 +while.end3098: ret void } @@ -31073,30 +31128,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 %panic3119, label %ok3120 +panic3119: + call void @finch_panic(ptr @.str.2035, i64 1244, ptr @.str.2036) unreachable -ok3113: +ok3120: %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.cond3121 +while.cond3121: %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.body3122, label %while.end3123 +while.body3122: %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: + br label %while.cond3121 +while.end3123: ret void } @@ -31106,47 +31161,47 @@ entry: 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) + br i1 %t3, label %panic3124, label %ok3125 +panic3124: + call void @finch_panic(ptr @.str.2037, i64 1253, ptr @.str.2038) unreachable -ok3118: +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 %then3119, label %endif3121 -then3119: + 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 %panic3122, label %ok3123 -panic3122: - call void @finch_panic(ptr @.str.2035, i64 1254, ptr @.str.2036) + br i1 %t9, label %panic3129, label %ok3130 +panic3129: + call void @finch_panic(ptr @.str.2039, i64 1254, ptr @.str.2040) unreachable -ok3123: +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 %endif3121 -endif3121: + br label %endif3128 +endif3128: %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) + br i1 %t15, label %panic3131, label %ok3132 +panic3131: + call void @finch_panic(ptr @.str.2041, i64 1256, ptr @.str.2042) unreachable -ok3125: +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 %panic3126, label %ok3127 -panic3126: - call void @finch_panic(ptr @.str.2039, i64 1256, ptr @.str.2040) + br i1 %t19, label %panic3133, label %ok3134 +panic3133: + call void @finch_panic(ptr @.str.2043, i64 1256, ptr @.str.2044) unreachable -ok3127: +ok3134: %t20 = sub i64 %t18, 1 %t21 = load ptr, ptr %t16 %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 @@ -31170,57 +31225,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.2045, 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 %then3135, label %endif3137 +then3135: %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: +endif3137: %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.2046, 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.from3138 +logic.from3138: + br i1 %t18, label %logic.end3140, label %logic.rhs3139 +logic.rhs3139: %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.2047, 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.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: %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 %range3145, label %inrange3146 +range3145: + call void @finch_panic_index(ptr @.str.2048, i64 1266, i64 0, i64 %t28) unreachable -inrange3139: +inrange3146: %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 } +endif3144: + ret { ptr, i64, i64 } { ptr @.str.2049, i64 0, i64 0 } } define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) { @@ -31259,21 +31314,21 @@ entry: %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t5 = call ptr @finch_alloc(i64 %t4) %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2046, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.2050, 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.2051, 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.2052, 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.2053, 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.2054, 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.2055, 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.2056, 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.2057, 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 @@ -31281,22 +31336,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.2058, 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.from3147 +logic.from3147: + br i1 %t23, label %logic.rhs3148, label %logic.end3149 +logic.rhs3148: %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 %range3150, label %inrange3151 +range3150: + call void @finch_panic_index(ptr @.str.2059, i64 1273, i64 0, i64 %t26) unreachable -inrange3144: +inrange3151: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 %t30 = load %S.ast.Node, ptr %t29 @@ -31306,25 +31361,25 @@ 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: + 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: ret i1 true -endif3148: +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.2056, i64 6, i64 0 }, ptr %a41 + 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.from3149 -logic.from3149: - br i1 %t43, label %logic.rhs3150, label %logic.end3151 -logic.rhs3150: + 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 @@ -31332,40 +31387,40 @@ logic.rhs3150: %t48 = load i64, ptr %t44 %t49 = load ptr, ptr %a17 store i64 0, ptr %a50 - br label %find.cond3152 -find.cond3152: + br label %find.cond3159 +find.cond3159: %t51 = load i64, ptr %a50 %t52 = icmp slt i64 %t51, %t48 - br i1 %t52, label %find.body3153, label %find.end3156 -find.body3153: + 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.hit3154, label %find.next3155 -find.hit3154: + br i1 %t58, label %find.hit3161, label %find.next3162 +find.hit3161: store i64 %t51, ptr %a47 - br label %find.end3156 -find.next3155: + br label %find.end3163 +find.next3162: %t59 = add i64 %t51, 1 store i64 %t59, ptr %a50 - br label %find.cond3152 -find.end3156: + br label %find.cond3159 +find.end3163: %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: + 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 %panic3160, label %ok3161 -panic3160: - call void @finch_panic(ptr @.str.2057, i64 1279, ptr @.str.2058) + br i1 %t63, label %panic3167, label %ok3168 +panic3167: + call void @finch_panic(ptr @.str.2061, i64 1279, ptr @.str.2062) unreachable -ok3161: +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 @@ -31374,52 +31429,52 @@ ok3161: %t69 = load i64, ptr %t65 %t70 = load ptr, ptr %t64 store i64 0, ptr %a71 - br label %find.cond3162 -find.cond3162: + br label %find.cond3169 +find.cond3169: %t72 = load i64, ptr %a71 %t73 = icmp slt i64 %t72, %t69 - br i1 %t73, label %find.body3163, label %find.end3166 -find.body3163: + 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.hit3164, label %find.next3165 -find.hit3164: + br i1 %t79, label %find.hit3171, label %find.next3172 +find.hit3171: store i64 %t72, ptr %a68 - br label %find.end3166 -find.next3165: + br label %find.end3173 +find.next3172: %t80 = add i64 %t72, 1 store i64 %t80, ptr %a71 - br label %find.cond3162 -find.end3166: + br label %find.cond3169 +find.end3173: %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: + 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 %range3172, label %inrange3173 -range3172: - call void @finch_panic_index(ptr @.str.2059, i64 1279, i64 0, i64 %t87) + br i1 %t88, label %range3179, label %inrange3180 +range3179: + call void @finch_panic_index(ptr @.str.2063, i64 1279, i64 0, i64 %t87) unreachable -inrange3173: +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 @@ -31429,62 +31484,62 @@ inrange3173: 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: + 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: ret i1 true -endif3177: +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.2060, i64 4, i64 0 }, ptr %a102 + 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.from3178 -logic.from3178: - br i1 %t104, label %logic.rhs3179, label %logic.end3180 -logic.rhs3179: + 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.2061, i64 4, i64 0 }, ptr %a108 + 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.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: + 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.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: + 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 %range3189, label %inrange3190 -range3189: - call void @finch_panic_index(ptr @.str.2062, i64 1282, i64 0, i64 %t119) + br i1 %t120, label %range3196, label %inrange3197 +range3196: + call void @finch_panic_index(ptr @.str.2066, i64 1282, i64 0, i64 %t119) unreachable -inrange3190: +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 @@ -31494,25 +31549,25 @@ inrange3190: 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: + 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: ret i1 true -endif3194: +endif3201: %t131 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 store i64 0, ptr %a132 - br label %each.cond3195 -each.cond3195: + 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.body3196, label %each.end3198 -each.body3196: + 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 @@ -31521,17 +31576,17 @@ each.body3196: %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: + br i1 %t144, label %then3206, label %endif3208 +then3206: ret i1 true -endif3201: - br label %each.step3197 -each.step3197: +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.cond3195 -each.end3198: + br label %each.cond3202 +each.end3205: ret i1 false } @@ -31788,49 +31843,49 @@ entry: 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 %panic3209, label %ok3210 +panic3209: + call void @finch_panic(ptr @.str.2067, i64 1296, ptr @.str.2068) unreachable -ok3203: +ok3210: %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.cond3211 +for.cond3211: %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.body3212, label %for.end3214 +for.body3212: %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 %panic3215, label %ok3216 +panic3215: + call void @finch_panic(ptr @.str.2069, i64 1297, ptr @.str.2070) unreachable -ok3209: +ok3216: %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 %range3217, label %inrange3218 +range3217: + call void @finch_panic_index(ptr @.str.2071, i64 1297, i64 %t13, i64 %t15) unreachable -inrange3211: +inrange3218: %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 %panic3219, label %ok3220 +panic3219: + call void @finch_panic(ptr @.str.2072, i64 1297, ptr @.str.2073) unreachable -ok3213: +ok3220: %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 store { ptr, i64, i64 } %t20, ptr %a24 call void @finch_str_copy(ptr %a25, ptr %a24) @@ -31838,50 +31893,50 @@ ok3213: 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) + br i1 %t28, label %panic3221, label %ok3222 +panic3221: + call void @finch_panic(ptr @.str.2074, i64 1298, ptr @.str.2075) unreachable -ok3215: +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 %range3216, label %inrange3217 -range3216: - call void @finch_panic_index(ptr @.str.2072, i64 1298, i64 %t30, i64 %t32) + br i1 %t33, label %range3223, label %inrange3224 +range3223: + call void @finch_panic_index(ptr @.str.2076, i64 1298, i64 %t30, i64 %t32) unreachable -inrange3217: +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.cond3218 -for.cond3218: + br label %for.cond3225 +for.cond3225: %t40 = load i64, ptr %a39 %t41 = icmp slt i64 %t40, %t38 - br i1 %t41, label %for.body3219, label %for.end3221 -for.body3219: + 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 %panic3222, label %ok3223 -panic3222: - call void @finch_panic(ptr @.str.2073, i64 1299, ptr @.str.2074) + br i1 %t43, label %panic3229, label %ok3230 +panic3229: + call void @finch_panic(ptr @.str.2077, i64 1299, ptr @.str.2078) unreachable -ok3223: +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 %range3224, label %inrange3225 -range3224: - call void @finch_panic_index(ptr @.str.2075, i64 1299, i64 %t45, i64 %t47) + br i1 %t48, label %range3231, label %inrange3232 +range3231: + call void @finch_panic_index(ptr @.str.2079, i64 1299, i64 %t45, i64 %t47) unreachable -inrange3225: +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 @@ -31889,11 +31944,11 @@ inrange3225: %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) + br i1 %t55, label %range3233, label %inrange3234 +range3233: + call void @finch_panic_index(ptr @.str.2080, i64 1299, i64 %t52, i64 %t54) unreachable -inrange3227: +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 @@ -31904,79 +31959,79 @@ inrange3227: %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) + br i1 %t65, label %panic3235, label %ok3236 +panic3235: + call void @finch_panic(ptr @.str.2081, i64 1300, ptr @.str.2082) unreachable -ok3229: +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 %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: + 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 %panic3233, label %ok3234 -panic3233: - call void @finch_panic(ptr @.str.2079, i64 1300, ptr @.str.2080) + br i1 %t74, label %panic3240, label %ok3241 +panic3240: + call void @finch_panic(ptr @.str.2083, i64 1300, ptr @.str.2084) unreachable -ok3234: +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 %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) + %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.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: + 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.2082, i64 12, i64 0 }, ptr %a87 + 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.2083, i64 18, i64 0 }, ptr %a92 + 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 %endif3238 -endif3238: + 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 %then3239, label %endif3241 -then3239: + br i1 %t97, label %then3246, label %endif3248 +then3246: %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) + br i1 %t99, label %panic3249, label %ok3250 +panic3249: + call void @finch_panic(ptr @.str.2088, i64 1305, ptr @.str.2089) unreachable -ok3243: +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 %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 %panic3251, label %ok3252 +panic3251: + call void @finch_panic(ptr @.str.2090, i64 1305, ptr @.str.2091) unreachable -ok3245: +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 @@ -32007,24 +32062,24 @@ ok3245: %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: + br label %for.step3227 +endif3248: %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) + br i1 %t132, label %panic3253, label %ok3254 +panic3253: + call void @finch_panic(ptr @.str.2092, i64 1308, ptr @.str.2093) unreachable -ok3247: +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 %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 %panic3255, label %ok3256 +panic3255: + call void @finch_panic(ptr @.str.2094, i64 1308, ptr @.str.2095) unreachable -ok3249: +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 @@ -32048,65 +32103,65 @@ ok3249: %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: + br label %for.step3227 +for.step3227: %t157 = load i64, ptr %a39 %t158 = add i64 %t157, 1 store i64 %t158, ptr %a39 - br label %for.cond3218 -for.end3221: - br label %for.step3206 -for.step3206: + 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.cond3204 -for.end3207: + br label %for.cond3211 +for.end3214: %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) + br i1 %t162, label %panic3257, label %ok3258 +panic3257: + call void @finch_panic(ptr @.str.2096, i64 1311, ptr @.str.2097) unreachable -ok3251: +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.cond3252 -for.cond3252: + br label %for.cond3259 +for.cond3259: %t167 = load i64, ptr %a166 %t168 = icmp slt i64 %t167, %t165 - br i1 %t168, label %for.body3253, label %for.end3255 -for.body3253: + 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 %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2094, i64 1312, ptr @.str.2095) + br i1 %t170, label %panic3263, label %ok3264 +panic3263: + call void @finch_panic(ptr @.str.2098, i64 1312, ptr @.str.2099) unreachable -ok3257: +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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2096, i64 1312, i64 %t172, i64 %t174) + br i1 %t175, label %range3265, label %inrange3266 +range3265: + call void @finch_panic_index(ptr @.str.2100, i64 1312, i64 %t172, i64 %t174) unreachable -inrange3259: +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 %panic3260, label %ok3261 -panic3260: - call void @finch_panic(ptr @.str.2097, i64 1312, ptr @.str.2098) + br i1 %t181, label %panic3267, label %ok3268 +panic3267: + call void @finch_panic(ptr @.str.2101, i64 1312, ptr @.str.2102) unreachable -ok3261: +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) @@ -32114,50 +32169,50 @@ ok3261: 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) + br i1 %t187, label %panic3269, label %ok3270 +panic3269: + call void @finch_panic(ptr @.str.2103, i64 1313, ptr @.str.2104) unreachable -ok3263: +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 %range3264, label %inrange3265 -range3264: - call void @finch_panic_index(ptr @.str.2101, i64 1313, i64 %t189, i64 %t191) + br i1 %t192, label %range3271, label %inrange3272 +range3271: + call void @finch_panic_index(ptr @.str.2105, i64 1313, i64 %t189, i64 %t191) unreachable -inrange3265: +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.cond3266 -for.cond3266: + br label %for.cond3273 +for.cond3273: %t199 = load i64, ptr %a198 %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body3267, label %for.end3269 -for.body3267: + 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 %panic3270, label %ok3271 -panic3270: - call void @finch_panic(ptr @.str.2102, i64 1314, ptr @.str.2103) + br i1 %t202, label %panic3277, label %ok3278 +panic3277: + call void @finch_panic(ptr @.str.2106, i64 1314, ptr @.str.2107) unreachable -ok3271: +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 %range3272, label %inrange3273 -range3272: - call void @finch_panic_index(ptr @.str.2104, i64 1314, i64 %t204, i64 %t206) + br i1 %t207, label %range3279, label %inrange3280 +range3279: + call void @finch_panic_index(ptr @.str.2108, i64 1314, i64 %t204, i64 %t206) unreachable -inrange3273: +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 @@ -32165,11 +32220,11 @@ inrange3273: %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) + br i1 %t214, label %range3281, label %inrange3282 +range3281: + call void @finch_panic_index(ptr @.str.2109, i64 1314, i64 %t211, i64 %t213) unreachable -inrange3275: +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 @@ -32180,64 +32235,64 @@ inrange3275: %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) + br i1 %t224, label %panic3283, label %ok3284 +panic3283: + call void @finch_panic(ptr @.str.2110, i64 1315, ptr @.str.2111) unreachable -ok3277: +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.from3278 -logic.from3278: - br i1 %t230, label %logic.end3280, label %logic.rhs3279 -logic.rhs3279: + 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 %panic3281, label %ok3282 -panic3281: - call void @finch_panic(ptr @.str.2108, i64 1315, ptr @.str.2109) + br i1 %t233, label %panic3288, label %ok3289 +panic3288: + call void @finch_panic(ptr @.str.2112, i64 1315, ptr @.str.2113) unreachable -ok3282: +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.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: + 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.2110, i64 1, i64 0 }, ptr %a246 + 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.2111, i64 18, i64 0 }, ptr %a251 + 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 %endif3286 -endif3286: + br label %endif3293 +endif3293: %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) + br i1 %t254, label %panic3294, label %ok3295 +panic3294: + call void @finch_panic(ptr @.str.2116, i64 1318, ptr @.str.2117) unreachable -ok3288: +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 @@ -32254,14 +32309,14 @@ ok3288: 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: + 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.body3290, label %each.end3292 -each.body3290: + 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 @@ -32270,15 +32325,15 @@ each.body3290: %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: + 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.2114, i64 1322) + %t286 = call i64 @finch_str_to_int(ptr %a285, ptr @.str.2118, i64 1322) store i64 %t286, ptr %a268 - br label %endif3295 -endif3295: + br label %endif3302 +endif3302: %t287 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 %t289 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 @@ -32287,41 +32342,41 @@ endif3295: %t292 = load i64, ptr %t288 %t293 = load ptr, ptr %t287 store i64 0, ptr %a294 - br label %find.cond3296 -find.cond3296: + br label %find.cond3303 +find.cond3303: %t295 = load i64, ptr %a294 %t296 = icmp slt i64 %t295, %t292 - br i1 %t296, label %find.body3297, label %find.end3300 -find.body3297: + br i1 %t296, label %find.body3304, label %find.end3307 +find.body3304: %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t295 %t298 = load { ptr, i64, i64 }, ptr %t297 store { ptr, i64, i64 } %t298, ptr %a299 store { ptr, i64, i64 } %t290, ptr %a300 %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %find.hit3298, label %find.next3299 -find.hit3298: + br i1 %t302, label %find.hit3305, label %find.next3306 +find.hit3305: store i64 %t295, ptr %a291 - br label %find.end3300 -find.next3299: + br label %find.end3307 +find.next3306: %t303 = add i64 %t295, 1 store i64 %t303, ptr %a294 - br label %find.cond3296 -find.end3300: + br label %find.cond3303 +find.end3307: %t304 = load i64, ptr %a291 %t305 = icmp sge i64 %t304, 0 - br i1 %t305, label %then3301, label %endif3303 -then3301: + 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.2115, i64 9, i64 0 }, ptr %a311 + 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.2116, i64 17, i64 0 }, ptr %a316 + 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 @@ -32331,12 +32386,12 @@ then3301: 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 + 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 %endif3303 -endif3303: + 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 @@ -32344,38 +32399,38 @@ endif3303: %t332 = load i64, ptr %t329 %t333 = load ptr, ptr %t328 store i64 0, ptr %a334 - br label %find.cond3304 -find.cond3304: + br label %find.cond3311 +find.cond3311: %t335 = load i64, ptr %a334 %t336 = icmp slt i64 %t335, %t332 - br i1 %t336, label %find.body3305, label %find.end3308 -find.body3305: + 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.hit3306, label %find.next3307 -find.hit3306: + br i1 %t339, label %find.hit3313, label %find.next3314 +find.hit3313: store i64 %t335, ptr %a331 - br label %find.end3308 -find.next3307: + br label %find.end3315 +find.next3314: %t340 = add i64 %t335, 1 store i64 %t340, ptr %a334 - br label %find.cond3304 -find.end3308: + br label %find.cond3311 +find.end3315: %t341 = load i64, ptr %a331 %t342 = icmp sge i64 %t341, 0 - br i1 %t342, label %then3309, label %endif3311 -then3309: + 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.2118, i64 16, i64 0 }, ptr %a348 + 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.2119, i64 17, i64 0 }, ptr %a353 + 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 @@ -32386,12 +32441,12 @@ then3309: 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 + 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 %endif3311 -endif3311: + 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 @@ -32419,20 +32474,20 @@ endif3311: %t384 = load i64, ptr %a268 %t385 = add i64 %t384, 1 store i64 %t385, ptr %a268 - br label %each.step3291 -each.step3291: + br label %each.step3298 +each.step3298: %t386 = load i64, ptr %a270 %t387 = add i64 %t386, 1 store i64 %t387, ptr %a270 - br label %each.cond3289 -each.end3292: + br label %each.cond3296 +each.end3299: %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) + br i1 %t389, label %panic3319, label %ok3320 +panic3319: + call void @finch_panic(ptr @.str.2125, i64 1334, ptr @.str.2126) unreachable -ok3313: +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 @@ -32446,66 +32501,66 @@ ok3313: %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: + br label %for.step3275 +for.step3275: %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: + 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.cond3252 -for.end3255: + br label %for.cond3259 +for.end3262: %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) + br i1 %t405, label %panic3321, label %ok3322 +panic3321: + call void @finch_panic(ptr @.str.2127, i64 1337, ptr @.str.2128) unreachable -ok3315: +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 %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: + br label %for.cond3323 +for.cond3323: %t411 = load i64, ptr %a410 %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body3317, label %for.end3319 -for.body3317: + 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 %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2125, i64 1338, ptr @.str.2126) + br i1 %t414, label %panic3327, label %ok3328 +panic3327: + call void @finch_panic(ptr @.str.2129, i64 1338, ptr @.str.2130) unreachable -ok3321: +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.2127, i64 1, i64 0 }, 0 + %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 %panic3322, label %ok3323 -panic3322: - call void @finch_panic(ptr @.str.2128, i64 1338, ptr @.str.2129) + br i1 %t419, label %panic3329, label %ok3330 +panic3329: + call void @finch_panic(ptr @.str.2132, i64 1338, ptr @.str.2133) unreachable -ok3323: +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 %range3324, label %inrange3325 -range3324: - call void @finch_panic_index(ptr @.str.2130, i64 1338, i64 %t422, i64 %t424) + br i1 %t425, label %range3331, label %inrange3332 +range3331: + call void @finch_panic_index(ptr @.str.2134, i64 1338, i64 %t422, i64 %t424) unreachable -inrange3325: +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 @@ -32524,85 +32579,85 @@ inrange3325: %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: + br label %for.step3325 +for.step3325: %t441 = load i64, ptr %a410 %t442 = add i64 %t441, 1 store i64 %t442, ptr %a410 - br label %for.cond3316 -for.end3319: + br label %for.cond3323 +for.end3326: %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) + br i1 %t444, label %panic3333, label %ok3334 +panic3333: + call void @finch_panic(ptr @.str.2135, i64 1340, ptr @.str.2136) unreachable -ok3327: +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.cond3328 -for.cond3328: + br label %for.cond3335 +for.cond3335: %t449 = load i64, ptr %a448 %t450 = icmp slt i64 %t449, %t447 - br i1 %t450, label %for.body3329, label %for.end3331 -for.body3329: + 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.step3330 -for.step3330: + br label %for.step3337 +for.step3337: %t453 = load i64, ptr %a448 %t454 = add i64 %t453, 1 store i64 %t454, ptr %a448 - br label %for.cond3328 -for.end3331: + br label %for.cond3335 +for.end3338: %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) + br i1 %t456, label %panic3339, label %ok3340 +panic3339: + call void @finch_panic(ptr @.str.2137, i64 1343, ptr @.str.2138) unreachable -ok3333: +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.cond3334 -for.cond3334: + br label %for.cond3341 +for.cond3341: %t461 = load i64, ptr %a460 %t462 = icmp slt i64 %t461, %t459 - br i1 %t462, label %for.body3335, label %for.end3337 -for.body3335: + 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 %panic3338, label %ok3339 -panic3338: - call void @finch_panic(ptr @.str.2135, i64 1344, ptr @.str.2136) + br i1 %t464, label %panic3345, label %ok3346 +panic3345: + call void @finch_panic(ptr @.str.2139, i64 1344, ptr @.str.2140) unreachable -ok3339: +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 %range3340, label %inrange3341 -range3340: - call void @finch_panic_index(ptr @.str.2137, i64 1344, i64 %t466, i64 %t468) + br i1 %t469, label %range3347, label %inrange3348 +range3347: + call void @finch_panic_index(ptr @.str.2141, i64 1344, i64 %t466, i64 %t468) unreachable -inrange3341: +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 %panic3342, label %ok3343 -panic3342: - call void @finch_panic(ptr @.str.2138, i64 1344, ptr @.str.2139) + br i1 %t475, label %panic3349, label %ok3350 +panic3349: + call void @finch_panic(ptr @.str.2142, i64 1344, ptr @.str.2143) unreachable -ok3343: +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) @@ -32610,50 +32665,50 @@ ok3343: store { ptr, i64, i64 } %t479, ptr %t476 %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 %panic3351, label %ok3352 +panic3351: + call void @finch_panic(ptr @.str.2144, i64 1345, ptr @.str.2145) unreachable -ok3345: +ok3352: %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0 %t483 = load i64, ptr %a460 %t484 = load { ptr, i64, i64 }, ptr %t482 %t485 = extractvalue { ptr, i64, i64 } %t484, 1 %t486 = icmp uge i64 %t483, %t485 - br i1 %t486, label %range3346, label %inrange3347 -range3346: - call void @finch_panic_index(ptr @.str.2142, i64 1345, i64 %t483, i64 %t485) + br i1 %t486, label %range3353, label %inrange3354 +range3353: + call void @finch_panic_index(ptr @.str.2146, i64 1345, i64 %t483, i64 %t485) unreachable -inrange3347: +inrange3354: %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: + br label %for.cond3355 +for.cond3355: %t493 = load i64, ptr %a492 %t494 = icmp slt i64 %t493, %t491 - br i1 %t494, label %for.body3349, label %for.end3351 -for.body3349: + 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 %panic3352, label %ok3353 -panic3352: - call void @finch_panic(ptr @.str.2143, i64 1346, ptr @.str.2144) + br i1 %t496, label %panic3359, label %ok3360 +panic3359: + call void @finch_panic(ptr @.str.2147, i64 1346, ptr @.str.2148) unreachable -ok3353: +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 %range3354, label %inrange3355 -range3354: - call void @finch_panic_index(ptr @.str.2145, i64 1346, i64 %t498, i64 %t500) + br i1 %t501, label %range3361, label %inrange3362 +range3361: + call void @finch_panic_index(ptr @.str.2149, i64 1346, i64 %t498, i64 %t500) unreachable -inrange3355: +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 @@ -32661,11 +32716,11 @@ inrange3355: %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) + br i1 %t508, label %range3363, label %inrange3364 +range3363: + call void @finch_panic_index(ptr @.str.2150, i64 1346, i64 %t505, i64 %t507) unreachable -inrange3357: +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 @@ -32677,16 +32732,16 @@ inrange3357: %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: + 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 %panic3361, label %ok3362 -panic3361: - call void @finch_panic(ptr @.str.2147, i64 1349, ptr @.str.2148) + br i1 %t522, label %panic3368, label %ok3369 +panic3368: + call void @finch_panic(ptr @.str.2151, i64 1349, ptr @.str.2152) unreachable -ok3362: +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 @@ -32695,83 +32750,83 @@ ok3362: %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: + 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.2149, i64 10, i64 0 }, ptr %a536 + 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.2150, i64 18, i64 0 }, ptr %a541 + 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 %endif3365 -endif3365: + 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.from3366 -logic.from3366: - br i1 %t546, label %logic.rhs3367, label %logic.end3368 -logic.rhs3367: + 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 %panic3369, label %ok3370 -panic3369: - call void @finch_panic(ptr @.str.2151, i64 1352, ptr @.str.2152) + br i1 %t549, label %panic3376, label %ok3377 +panic3376: + call void @finch_panic(ptr @.str.2155, i64 1352, ptr @.str.2156) unreachable -ok3370: +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.2153, i64 0, i64 0 }, i1 true) + %t554 = call i64 @finch.gen.findTemplate(ptr %t547, { ptr, i64, i64 } %t551, { ptr, i64, i64 } %t553, { ptr, i64, i64 } { ptr @.str.2157, 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: + 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.2154, i64 34, i64 0 }, ptr %a562 + 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.2155, i64 53, i64 0 }, ptr %a567 + 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 %endif3374 -endif3374: + br label %endif3381 +endif3381: %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 %panic3382, label %ok3383 +panic3382: + call void @finch_panic(ptr @.str.2160, i64 1355, ptr @.str.2161) unreachable -ok3376: +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 %panic3377, label %ok3378 -panic3377: - call void @finch_panic(ptr @.str.2158, i64 1355, ptr @.str.2159) + br i1 %t574, label %panic3384, label %ok3385 +panic3384: + call void @finch_panic(ptr @.str.2162, i64 1355, ptr @.str.2163) unreachable -ok3378: +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 @@ -32807,15 +32862,15 @@ ok3378: %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: + br label %for.step3357 +endif3367: %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) + br i1 %t608, label %panic3386, label %ok3387 +panic3386: + call void @finch_panic(ptr @.str.2164, i64 1358, ptr @.str.2165) unreachable -ok3380: +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 @@ -32827,31 +32882,31 @@ ok3380: %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: + 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 %panic3384, label %ok3385 -panic3384: - call void @finch_panic(ptr @.str.2162, i64 1360, ptr @.str.2163) + br i1 %t622, label %panic3391, label %ok3392 +panic3391: + call void @finch_panic(ptr @.str.2166, i64 1360, ptr @.str.2167) unreachable -ok3385: +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.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: + 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 @@ -32861,18 +32916,18 @@ then3387: %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: + 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.2164, i64 11, i64 0 }, ptr %a643 + 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.2165, i64 1, i64 0 }, ptr %a648 + 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 @@ -32882,28 +32937,28 @@ then3390: 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 + 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 %endif3392 -endif3392: - br label %endif3389 -else3388: + 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 %then3393, label %else3394 -then3393: + 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 %panic3396, label %ok3397 -panic3396: - call void @finch_panic(ptr @.str.2167, i64 1366, ptr @.str.2168) + br i1 %t666, label %panic3403, label %ok3404 +panic3403: + call void @finch_panic(ptr @.str.2171, i64 1366, ptr @.str.2172) unreachable -ok3397: +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 @@ -32912,49 +32967,49 @@ ok3397: 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: + 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.2169, i64 1, i64 0 }, { ptr, i64, i64 } %t677) + %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.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: + 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.2170, i64 1, i64 0 }, { ptr, i64, i64 } %t683) + %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.2171, i64 1, i64 0 }, ptr %a614 - br label %endif3404 -endif3404: + 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 %then3405, label %endif3407 -then3405: + 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.2172, i64 26, i64 0 }, ptr %a692 + 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.2173, i64 76, i64 0 }, ptr %a697 + 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 %endif3407 -endif3407: + 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 @@ -32963,18 +33018,18 @@ endif3407: %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 %then3408, label %endif3410 -then3408: + 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.2174, i64 11, i64 0 }, ptr %a712 + 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.2175, i64 1, i64 0 }, ptr %a717 + 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 @@ -32984,29 +33039,29 @@ then3408: 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 + 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 %endif3410 -endif3410: + br label %endif3417 +endif3417: %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) + br i1 %t730, label %panic3418, label %ok3419 +panic3418: + call void @finch_panic(ptr @.str.2181, i64 1377, ptr @.str.2182) unreachable -ok3412: +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 %range3413, label %inrange3414 -range3413: - call void @finch_panic_index(ptr @.str.2179, i64 1377, i64 %t732, i64 %t734) + br i1 %t735, label %range3420, label %inrange3421 +range3420: + call void @finch_panic_index(ptr @.str.2183, i64 1377, i64 %t732, i64 %t734) unreachable -inrange3414: +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 @@ -33017,41 +33072,41 @@ inrange3414: %t743 = load i64, ptr %t739 %t744 = load ptr, ptr %t738 store i64 0, ptr %a745 - br label %find.cond3415 -find.cond3415: + br label %find.cond3422 +find.cond3422: %t746 = load i64, ptr %a745 %t747 = icmp slt i64 %t746, %t743 - br i1 %t747, label %find.body3416, label %find.end3419 -find.body3416: + 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.hit3417, label %find.next3418 -find.hit3417: + br i1 %t753, label %find.hit3424, label %find.next3425 +find.hit3424: store i64 %t746, ptr %a742 - br label %find.end3419 -find.next3418: + br label %find.end3426 +find.next3425: %t754 = add i64 %t746, 1 store i64 %t754, ptr %a745 - br label %find.cond3415 -find.end3419: + br label %find.cond3422 +find.end3426: %t755 = load i64, ptr %a742 %t756 = icmp sge i64 %t755, 0 - br i1 %t756, label %then3420, label %endif3422 -then3420: + 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.2180, i64 11, i64 0 }, ptr %a762 + 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.2181, i64 28, i64 0 }, ptr %a767 + 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 @@ -33061,76 +33116,76 @@ then3420: 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 + 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 %endif3422 -endif3422: - br label %endif3395 -else3394: + 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 %panic3423, label %ok3424 -panic3423: - call void @finch_panic(ptr @.str.2183, i64 1381, ptr @.str.2184) + br i1 %t781, label %panic3430, label %ok3431 +panic3430: + call void @finch_panic(ptr @.str.2187, i64 1381, ptr @.str.2188) unreachable -ok3424: +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 %then3425, label %endif3427 -then3425: + 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.2185, i64 10, i64 0 }, ptr %a793 + 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.2186, i64 18, i64 0 }, ptr %a798 + 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 %endif3427 -endif3427: + 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 %then3428, label %endif3430 -then3428: + 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.2187, i64 1, i64 0 }, ptr %a808 + 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.2188, i64 43, i64 0 }, ptr %a813 + 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 %endif3430 -endif3430: - br label %endif3395 -endif3395: - br label %endif3389 -endif3389: + 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 %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2189, i64 1388, ptr @.str.2190) + br i1 %t816, label %panic3438, label %ok3439 +panic3438: + call void @finch_panic(ptr @.str.2193, i64 1388, ptr @.str.2194) unreachable -ok3432: +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 @@ -33169,20 +33224,20 @@ ok3432: 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) + br i1 %t854, label %panic3440, label %ok3441 +panic3440: + call void @finch_panic(ptr @.str.2196, i64 1389, ptr @.str.2197) unreachable -ok3434: +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.2191, i64 7, i64 0 }, ptr %a859 + 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.2194, i64 1, i64 0 }, ptr %a864 + 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 @@ -33197,24 +33252,24 @@ ok3434: %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: + br i1 %t876, label %then3442, label %endif3444 +then3442: %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) + br i1 %t878, label %panic3445, label %ok3446 +panic3445: + call void @finch_panic(ptr @.str.2200, i64 1391, ptr @.str.2201) unreachable -ok3439: +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.2195, i64 7, i64 0 }, ptr %a883 + 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.2198, i64 1, i64 0 }, ptr %a888 + 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 @@ -33224,7 +33279,7 @@ ok3439: 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 + 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 @@ -33235,8 +33290,8 @@ ok3439: %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: + 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 @@ -33249,72 +33304,72 @@ endif3437: %t915 = load i64, ptr %t914 %t916 = sub i64 %t915, 1 store i64 0, ptr %a917 - br label %for.cond3440 -for.cond3440: + br label %for.cond3447 +for.cond3447: %t918 = load i64, ptr %a917 %t919 = icmp slt i64 %t918, %t916 - br i1 %t919, label %for.body3441, label %for.end3443 -for.body3441: + 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 %range3444, label %inrange3445 -range3444: - call void @finch_panic_index(ptr @.str.2200, i64 1395, i64 %t921, i64 %t923) + br i1 %t924, label %range3451, label %inrange3452 +range3451: + call void @finch_panic_index(ptr @.str.2204, i64 1395, i64 %t921, i64 %t923) unreachable -inrange3445: +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.2201, i64 4, i64 0 }, ptr %a930 + 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.from3446 -logic.from3446: - br i1 %t932, label %logic.rhs3447, label %logic.end3448 -logic.rhs3447: + 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.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: + 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 %range3453, label %inrange3454 -range3453: - call void @finch_panic_index(ptr @.str.2202, i64 1396, i64 %t940, i64 %t942) + br i1 %t943, label %range3460, label %inrange3461 +range3460: + call void @finch_panic_index(ptr @.str.2206, i64 1396, i64 %t940, i64 %t942) unreachable -inrange3454: +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.2203, i64 22, i64 0 }, ptr %a950 + 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.2204, i64 24, i64 0 }, ptr %a955 + 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 %endif3452 -endif3452: + 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 @@ -33323,11 +33378,11 @@ endif3452: %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) + br i1 %t964, label %range3462, label %inrange3463 +range3462: + call void @finch_panic_index(ptr @.str.2209, i64 1398, i64 %t961, i64 %t963) unreachable -inrange3456: +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 @@ -33337,11 +33392,11 @@ inrange3456: %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) + br i1 %t973, label %range3464, label %inrange3465 +range3464: + call void @finch_panic_index(ptr @.str.2210, i64 1398, i64 %t970, i64 %t972) unreachable -inrange3458: +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 @@ -33360,11 +33415,11 @@ inrange3458: %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) + br i1 %t988, label %range3466, label %inrange3467 +range3466: + call void @finch_panic_index(ptr @.str.2211, i64 1399, i64 %t985, i64 %t987) unreachable -inrange3460: +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 @@ -33379,30 +33434,30 @@ inrange3460: %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: + br label %for.step3449 +for.step3449: %t1000 = load i64, ptr %a917 %t1001 = add i64 %t1000, 1 store i64 %t1001, ptr %a917 - br label %for.cond3440 -for.end3443: + 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 %then3461, label %endif3463 -then3461: + 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 %endif3463 -endif3463: + br label %endif3470 +endif3470: %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) + br i1 %t1008, label %panic3471, label %ok3472 +panic3471: + call void @finch_panic(ptr @.str.2212, i64 1404, ptr @.str.2213) unreachable -ok3465: +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 @@ -33416,125 +33471,125 @@ ok3465: %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: + br label %for.step3357 +for.step3357: %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: + 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.cond3334 -for.end3337: + br label %for.cond3341 +for.end3344: store i1 true, ptr %a1023 - br label %while.cond3466 -while.cond3466: + br label %while.cond3473 +while.cond3473: %t1024 = load i1, ptr %a1023 - br i1 %t1024, label %while.body3467, label %while.end3468 -while.body3467: + 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 %panic3469, label %ok3470 -panic3469: - call void @finch_panic(ptr @.str.2210, i64 1412, ptr @.str.2211) + br i1 %t1026, label %panic3476, label %ok3477 +panic3476: + call void @finch_panic(ptr @.str.2214, i64 1412, ptr @.str.2215) unreachable -ok3470: +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.cond3471 -for.cond3471: + br label %for.cond3478 +for.cond3478: %t1031 = load i64, ptr %a1030 %t1032 = icmp slt i64 %t1031, %t1029 - br i1 %t1032, label %for.body3472, label %for.end3474 -for.body3472: + 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 %panic3475, label %ok3476 -panic3475: - call void @finch_panic(ptr @.str.2212, i64 1413, ptr @.str.2213) + br i1 %t1034, label %panic3482, label %ok3483 +panic3482: + call void @finch_panic(ptr @.str.2216, i64 1413, ptr @.str.2217) unreachable -ok3476: +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 %range3477, label %inrange3478 -range3477: - call void @finch_panic_index(ptr @.str.2214, i64 1413, i64 %t1036, i64 %t1038) + br i1 %t1039, label %range3484, label %inrange3485 +range3484: + call void @finch_panic_index(ptr @.str.2218, i64 1413, i64 %t1036, i64 %t1038) unreachable -inrange3478: +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.from3479 -logic.from3479: - br i1 %t1045, label %logic.rhs3480, label %logic.end3481 -logic.rhs3480: + 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 %panic3482, label %ok3483 -panic3482: - call void @finch_panic(ptr @.str.2215, i64 1413, ptr @.str.2216) + br i1 %t1047, label %panic3489, label %ok3490 +panic3489: + call void @finch_panic(ptr @.str.2219, i64 1413, ptr @.str.2220) unreachable -ok3483: +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 %range3484, label %inrange3485 -range3484: - call void @finch_panic_index(ptr @.str.2217, i64 1413, i64 %t1049, i64 %t1051) + br i1 %t1052, label %range3491, label %inrange3492 +range3491: + call void @finch_panic_index(ptr @.str.2221, i64 1413, i64 %t1049, i64 %t1051) unreachable -inrange3485: +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.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: + 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 %panic3490, label %ok3491 -panic3490: - call void @finch_panic(ptr @.str.2218, i64 1414, ptr @.str.2219) + br i1 %t1060, label %panic3497, label %ok3498 +panic3497: + call void @finch_panic(ptr @.str.2222, i64 1414, ptr @.str.2223) unreachable -ok3491: +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 %panic3492, label %ok3493 -panic3492: - call void @finch_panic(ptr @.str.2220, i64 1414, ptr @.str.2221) + br i1 %t1063, label %panic3499, label %ok3500 +panic3499: + call void @finch_panic(ptr @.str.2224, i64 1414, ptr @.str.2225) unreachable -ok3493: +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 %range3494, label %inrange3495 -range3494: - call void @finch_panic_index(ptr @.str.2222, i64 1414, i64 %t1065, i64 %t1067) + br i1 %t1068, label %range3501, label %inrange3502 +range3501: + call void @finch_panic_index(ptr @.str.2226, i64 1414, i64 %t1065, i64 %t1067) unreachable -inrange3495: +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 @@ -33542,31 +33597,31 @@ inrange3495: %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) + br i1 %t1075, label %range3503, label %inrange3504 +range3503: + call void @finch_panic_index(ptr @.str.2227, i64 1414, i64 %t1072, i64 %t1074) unreachable -inrange3497: +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 %panic3498, label %ok3499 -panic3498: - call void @finch_panic(ptr @.str.2224, i64 1414, ptr @.str.2225) + br i1 %t1080, label %panic3505, label %ok3506 +panic3505: + call void @finch_panic(ptr @.str.2228, i64 1414, ptr @.str.2229) unreachable -ok3499: +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 %range3500, label %inrange3501 -range3500: - call void @finch_panic_index(ptr @.str.2226, i64 1414, i64 %t1082, i64 %t1084) + br i1 %t1085, label %range3507, label %inrange3508 +range3507: + call void @finch_panic_index(ptr @.str.2230, i64 1414, i64 %t1082, i64 %t1084) unreachable -inrange3501: +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 @@ -33574,11 +33629,11 @@ inrange3501: %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) + br i1 %t1092, label %range3509, label %inrange3510 +range3509: + call void @finch_panic_index(ptr @.str.2231, i64 1414, i64 %t1089, i64 %t1091) unreachable -inrange3503: +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 @@ -33595,64 +33650,64 @@ inrange3503: %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) + br i1 %t1108, label %range3511, label %inrange3512 +range3511: + call void @finch_panic_index(ptr @.str.2233, i64 1415, i64 %t1105, i64 %t1107) unreachable -inrange3505: +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.2228, i64 4, i64 0 }, %S.ast.Node %t1111) - br i1 %t1112, label %then3506, label %endif3508 -then3506: + %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 %panic3509, label %ok3510 -panic3509: - call void @finch_panic(ptr @.str.2230, i64 1416, ptr @.str.2231) + br i1 %t1114, label %panic3516, label %ok3517 +panic3516: + call void @finch_panic(ptr @.str.2234, i64 1416, ptr @.str.2235) unreachable -ok3510: +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 %range3511, label %inrange3512 -range3511: - call void @finch_panic_index(ptr @.str.2232, i64 1416, i64 %t1116, i64 %t1118) + br i1 %t1119, label %range3518, label %inrange3519 +range3518: + call void @finch_panic_index(ptr @.str.2236, i64 1416, i64 %t1116, i64 %t1118) unreachable -inrange3512: +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 %panic3513, label %ok3514 -panic3513: - call void @finch_panic(ptr @.str.2233, i64 1417, ptr @.str.2234) + br i1 %t1124, label %panic3520, label %ok3521 +panic3520: + call void @finch_panic(ptr @.str.2237, i64 1417, ptr @.str.2238) unreachable -ok3514: +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 %panic3515, label %ok3516 -panic3515: - call void @finch_panic(ptr @.str.2235, i64 1417, ptr @.str.2236) + br i1 %t1128, label %panic3522, label %ok3523 +panic3522: + call void @finch_panic(ptr @.str.2239, i64 1417, ptr @.str.2240) unreachable -ok3516: +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 %range3517, label %inrange3518 -range3517: - call void @finch_panic_index(ptr @.str.2237, i64 1417, i64 %t1130, i64 %t1132) + br i1 %t1133, label %range3524, label %inrange3525 +range3524: + call void @finch_panic_index(ptr @.str.2241, i64 1417, i64 %t1130, i64 %t1132) unreachable -inrange3518: +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 @@ -33668,51 +33723,51 @@ inrange3518: 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: + 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.cond3471 -for.end3474: + br label %for.cond3478 +for.end3481: %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) + br i1 %t1148, label %panic3526, label %ok3527 +panic3526: + call void @finch_panic(ptr @.str.2242, i64 1422, ptr @.str.2243) unreachable -ok3520: +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.cond3521 -for.cond3521: + br label %for.cond3528 +for.cond3528: %t1153 = load i64, ptr %a1152 %t1154 = icmp slt i64 %t1153, %t1151 - br i1 %t1154, label %for.body3522, label %for.end3524 -for.body3522: + 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 %panic3525, label %ok3526 -panic3525: - call void @finch_panic(ptr @.str.2240, i64 1423, ptr @.str.2241) + br i1 %t1156, label %panic3532, label %ok3533 +panic3532: + call void @finch_panic(ptr @.str.2244, i64 1423, ptr @.str.2245) unreachable -ok3526: +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 %range3527, label %inrange3528 -range3527: - call void @finch_panic_index(ptr @.str.2242, i64 1423, i64 %t1158, i64 %t1160) + br i1 %t1161, label %range3534, label %inrange3535 +range3534: + call void @finch_panic_index(ptr @.str.2246, i64 1423, i64 %t1158, i64 %t1160) unreachable -inrange3528: +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 @@ -33724,38 +33779,38 @@ inrange3528: %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: + 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.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: + 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 %panic3536, label %ok3537 -panic3536: - call void @finch_panic(ptr @.str.2243, i64 1425, ptr @.str.2244) + br i1 %t1178, label %panic3543, label %ok3544 +panic3543: + call void @finch_panic(ptr @.str.2247, i64 1425, ptr @.str.2248) unreachable -ok3537: +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 %range3538, label %inrange3539 -range3538: - call void @finch_panic_index(ptr @.str.2245, i64 1425, i64 %t1181, i64 %t1183) + br i1 %t1184, label %range3545, label %inrange3546 +range3545: + call void @finch_panic_index(ptr @.str.2249, i64 1425, i64 %t1181, i64 %t1183) unreachable -inrange3539: +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 @@ -33764,11 +33819,11 @@ inrange3539: %t1190 = load { ptr, i64, i64 }, ptr %t1187 %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 %range3547, label %inrange3548 +range3547: + call void @finch_panic_index(ptr @.str.2250, i64 1425, i64 %t1189, i64 %t1191) unreachable -inrange3541: +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 @@ -33785,45 +33840,45 @@ inrange3541: %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) + br i1 %t1208, label %range3549, label %inrange3550 +range3549: + call void @finch_panic_index(ptr @.str.2252, i64 1426, i64 %t1205, i64 %t1207) unreachable -inrange3543: +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.2247, i64 4, i64 0 }, %S.ast.Node %t1211) - br i1 %t1212, label %then3544, label %endif3546 -then3544: + %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 %panic3547, label %ok3548 -panic3547: - call void @finch_panic(ptr @.str.2249, i64 1427, ptr @.str.2250) + br i1 %t1214, label %panic3554, label %ok3555 +panic3554: + call void @finch_panic(ptr @.str.2253, i64 1427, ptr @.str.2254) unreachable -ok3548: +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 %range3549, label %inrange3550 -range3549: - call void @finch_panic_index(ptr @.str.2251, i64 1427, i64 %t1216, i64 %t1218) + br i1 %t1219, label %range3556, label %inrange3557 +range3556: + call void @finch_panic_index(ptr @.str.2255, i64 1427, i64 %t1216, i64 %t1218) unreachable -inrange3550: +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 %panic3551, label %ok3552 -panic3551: - call void @finch_panic(ptr @.str.2252, i64 1428, ptr @.str.2253) + br i1 %t1224, label %panic3558, label %ok3559 +panic3558: + call void @finch_panic(ptr @.str.2256, i64 1428, ptr @.str.2257) unreachable -ok3552: +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 @@ -33839,61 +33894,61 @@ ok3552: 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: + 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.cond3521 -for.end3524: - br label %while.cond3466 -while.end3468: + 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 %panic3553, label %ok3554 -panic3553: - call void @finch_panic(ptr @.str.2254, i64 1435, ptr @.str.2255) + br i1 %t1239, label %panic3560, label %ok3561 +panic3560: + call void @finch_panic(ptr @.str.2258, i64 1435, ptr @.str.2259) unreachable -ok3554: +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.cond3555 -for.cond3555: + br label %for.cond3562 +for.cond3562: %t1244 = load i64, ptr %a1243 %t1245 = icmp slt i64 %t1244, %t1242 - br i1 %t1245, label %for.body3556, label %for.end3558 -for.body3556: + 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 %panic3559, label %ok3560 -panic3559: - call void @finch_panic(ptr @.str.2256, i64 1436, ptr @.str.2257) + br i1 %t1247, label %panic3566, label %ok3567 +panic3566: + call void @finch_panic(ptr @.str.2260, i64 1436, ptr @.str.2261) unreachable -ok3560: +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 %panic3561, label %ok3562 -panic3561: - call void @finch_panic(ptr @.str.2258, i64 1436, ptr @.str.2259) + br i1 %t1250, label %panic3568, label %ok3569 +panic3568: + call void @finch_panic(ptr @.str.2262, i64 1436, ptr @.str.2263) unreachable -ok3562: +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 %range3563, label %inrange3564 -range3563: - call void @finch_panic_index(ptr @.str.2260, i64 1436, i64 %t1252, i64 %t1254) + br i1 %t1255, label %range3570, label %inrange3571 +range3570: + call void @finch_panic_index(ptr @.str.2264, i64 1436, i64 %t1252, i64 %t1254) unreachable -inrange3564: +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 @@ -33901,31 +33956,31 @@ inrange3564: %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) + br i1 %t1262, label %range3572, label %inrange3573 +range3572: + call void @finch_panic_index(ptr @.str.2265, i64 1436, i64 %t1259, i64 %t1261) unreachable -inrange3566: +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 %panic3567, label %ok3568 -panic3567: - call void @finch_panic(ptr @.str.2262, i64 1436, ptr @.str.2263) + br i1 %t1267, label %panic3574, label %ok3575 +panic3574: + call void @finch_panic(ptr @.str.2266, i64 1436, ptr @.str.2267) unreachable -ok3568: +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 %range3569, label %inrange3570 -range3569: - call void @finch_panic_index(ptr @.str.2264, i64 1436, i64 %t1269, i64 %t1271) + br i1 %t1272, label %range3576, label %inrange3577 +range3576: + call void @finch_panic_index(ptr @.str.2268, i64 1436, i64 %t1269, i64 %t1271) unreachable -inrange3570: +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 @@ -33933,11 +33988,11 @@ inrange3570: %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) + br i1 %t1279, label %range3578, label %inrange3579 +range3578: + call void @finch_panic_index(ptr @.str.2269, i64 1436, i64 %t1276, i64 %t1278) unreachable -inrange3572: +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 @@ -33953,11 +34008,11 @@ inrange3572: %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) + br i1 %t1294, label %range3580, label %inrange3581 +range3580: + call void @finch_panic_index(ptr @.str.2270, i64 1437, i64 %t1291, i64 %t1293) unreachable -inrange3574: +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 @@ -33967,50 +34022,50 @@ inrange3574: 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) + br i1 %t1303, label %panic3582, label %ok3583 +panic3582: + call void @finch_panic(ptr @.str.2271, i64 1438, ptr @.str.2272) unreachable -ok3576: +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 %range3577, label %inrange3578 -range3577: - call void @finch_panic_index(ptr @.str.2269, i64 1438, i64 %t1305, i64 %t1307) + br i1 %t1308, label %range3584, label %inrange3585 +range3584: + call void @finch_panic_index(ptr @.str.2273, i64 1438, i64 %t1305, i64 %t1307) unreachable -inrange3578: +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.cond3579 -for.cond3579: + br label %for.cond3586 +for.cond3586: %t1315 = load i64, ptr %a1314 %t1316 = icmp slt i64 %t1315, %t1313 - br i1 %t1316, label %for.body3580, label %for.end3582 -for.body3580: + 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 %panic3583, label %ok3584 -panic3583: - call void @finch_panic(ptr @.str.2270, i64 1439, ptr @.str.2271) + br i1 %t1318, label %panic3590, label %ok3591 +panic3590: + call void @finch_panic(ptr @.str.2274, i64 1439, ptr @.str.2275) unreachable -ok3584: +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 %range3585, label %inrange3586 -range3585: - call void @finch_panic_index(ptr @.str.2272, i64 1439, i64 %t1320, i64 %t1322) + br i1 %t1323, label %range3592, label %inrange3593 +range3592: + call void @finch_panic_index(ptr @.str.2276, i64 1439, i64 %t1320, i64 %t1322) unreachable -inrange3586: +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 @@ -34018,11 +34073,11 @@ inrange3586: %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) + br i1 %t1330, label %range3594, label %inrange3595 +range3594: + call void @finch_panic_index(ptr @.str.2277, i64 1439, i64 %t1327, i64 %t1329) unreachable -inrange3588: +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 @@ -34032,21 +34087,21 @@ inrange3588: 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) + br i1 %t1339, label %panic3596, label %ok3597 +panic3596: + call void @finch_panic(ptr @.str.2278, i64 1440, ptr @.str.2279) unreachable -ok3590: +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 %range3591, label %inrange3592 -range3591: - call void @finch_panic_index(ptr @.str.2276, i64 1440, i64 %t1341, i64 %t1343) + br i1 %t1344, label %range3598, label %inrange3599 +range3598: + call void @finch_panic_index(ptr @.str.2280, i64 1440, i64 %t1341, i64 %t1343) unreachable -inrange3592: +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 @@ -34054,28 +34109,28 @@ inrange3592: %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: + 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 %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2277, i64 1440, ptr @.str.2278) + br i1 %t1354, label %panic3603, label %ok3604 +panic3603: + call void @finch_panic(ptr @.str.2281, i64 1440, ptr @.str.2282) unreachable -ok3597: +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 %range3598, label %inrange3599 -range3598: - call void @finch_panic_index(ptr @.str.2279, i64 1440, i64 %t1356, i64 %t1358) + br i1 %t1359, label %range3605, label %inrange3606 +range3605: + call void @finch_panic_index(ptr @.str.2283, i64 1440, i64 %t1356, i64 %t1358) unreachable -inrange3599: +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 @@ -34083,22 +34138,22 @@ inrange3599: %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) + br i1 %t1366, label %range3607, label %inrange3608 +range3607: + call void @finch_panic_index(ptr @.str.2284, i64 1440, i64 %t1363, i64 %t1365) unreachable -inrange3601: +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.rend3602 -logic.rend3602: - br label %logic.end3595 -logic.end3595: - %t1373 = phi i1 [ false, %logic.from3593 ], [ %t1372, %logic.rend3602 ] + 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)) @@ -34106,20 +34161,20 @@ logic.end3595: %t1377 = getelementptr inbounds i1, ptr %t1376, i64 %t1374 store i1 %t1373, ptr %t1377 store i64 %t1375, ptr %t1348 - br label %for.step3581 -for.step3581: + br label %for.step3588 +for.step3588: %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: + 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.cond3555 -for.end3558: + br label %for.cond3562 +for.end3565: ret void } @@ -34147,38 +34202,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 %panic3610, label %ok3611 +panic3610: + call void @finch_panic(ptr @.str.2285, i64 1446, ptr @.str.2286) unreachable -ok3604: +ok3611: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 %t10 = load i64, ptr %t9 store i64 0, ptr %a11 - br label %for.cond3605 -for.cond3605: + br label %for.cond3612 +for.cond3612: %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.body3613, label %for.end3615 +for.body3613: %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 %panic3616, label %ok3617 +panic3616: + call void @finch_panic(ptr @.str.2287, i64 1447, ptr @.str.2288) unreachable -ok3610: +ok3617: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16 %t17 = load i64, ptr %a11 %t18 = load { ptr, i64, i64 }, ptr %t16 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3611, label %inrange3612 -range3611: - call void @finch_panic_index(ptr @.str.2285, i64 1447, i64 %t17, i64 %t19) + br i1 %t20, label %range3618, label %inrange3619 +range3618: + call void @finch_panic_index(ptr @.str.2289, i64 1447, i64 %t17, i64 %t19) unreachable -inrange3612: +inrange3619: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.gen.Template, ptr %t21, i64 %t17 %t23 = load %S.gen.Template, ptr %t22 @@ -34193,10 +34248,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.from3620 +logic.from3620: + br i1 %t34, label %logic.rhs3621, label %logic.end3622 +logic.rhs3621: %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 @@ -34204,15 +34259,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.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: %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 @@ -34220,36 +34275,36 @@ 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.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: %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.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: %t56 = load i64, ptr %a11 ret i64 %t56 -endif3627: - br label %for.step3607 -for.step3607: +endif3634: + br label %for.step3614 +for.step3614: %t57 = load i64, ptr %a11 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a11 - br label %for.cond3605 -for.end3608: + br label %for.cond3612 +for.end3615: ret i64 -1 } @@ -34264,14 +34319,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.cond3635 +each.cond3635: %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.body3636, label %each.end3638 +each.body3636: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 %t6 %t10 = load %S.ast.Type, ptr %t9 @@ -34286,15 +34341,15 @@ 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.step3637 +each.step3637: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %each.cond3628 -each.end3631: + br label %each.cond3635 +each.end3638: %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.2290, i64 2, i64 0 }, ptr %a22 call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 ret { ptr, i64, i64 } %t24 @@ -34383,21 +34438,21 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load { ptr, i64, i64 }, ptr %a2 %t8 = load { ptr, i64, i64 }, ptr %a3 - %t9 = call i64 @finch.gen.findTemplate(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, { ptr, i64, i64 } { ptr @.str.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.2291, 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 %then3639, label %endif3641 +then3639: %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.2292, 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.2293, 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 @@ -34406,29 +34461,29 @@ then3632: 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 + 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 %endif3634 -endif3634: + br label %endif3641 +endif3641: %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) + br i1 %t34, label %panic3642, label %ok3643 +panic3642: + call void @finch_panic(ptr @.str.2295, i64 1469, ptr @.str.2296) unreachable -ok3636: +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 %range3637, label %inrange3638 -range3637: - call void @finch_panic_index(ptr @.str.2293, i64 1469, i64 %t36, i64 %t38) + br i1 %t39, label %range3644, label %inrange3645 +range3644: + call void @finch_panic_index(ptr @.str.2297, i64 1469, i64 %t36, i64 %t38) unreachable -inrange3638: +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 @@ -34442,13 +34497,13 @@ inrange3638: %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: + 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.2294, i64 7, i64 0 }, ptr %a58 + 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 @@ -34461,7 +34516,7 @@ then3639: 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 + store { ptr, i64, i64 } { ptr @.str.2299, i64 24, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = load { ptr, i64, i64 }, ptr %a3 @@ -34470,12 +34525,12 @@ then3639: 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 + 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.2297, i64 2, i64 0 }, ptr %a84 + 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 @@ -34483,7 +34538,7 @@ then3639: 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 + 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 @@ -34495,11 +34550,11 @@ then3639: 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: + br label %endif3648 +endif3648: %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 + 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 @@ -34509,7 +34564,7 @@ endif3641: 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 + 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 @@ -34518,15 +34573,15 @@ endif3641: %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: + br i1 %t123, label %then3649, label %endif3651 +then3649: %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) + br i1 %t125, label %panic3652, label %ok3653 +panic3652: + call void @finch_panic(ptr @.str.2305, i64 1475, ptr @.str.2306) unreachable -ok3646: +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 @@ -34571,19 +34626,19 @@ ok3646: %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) + br i1 %t166, label %panic3654, label %ok3655 +panic3654: + call void @finch_panic(ptr @.str.2307, i64 1476, ptr @.str.2308) unreachable -ok3648: +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 %endif3644 -endif3644: - %t171 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2305, i64 6, i64 0 }, 0 + 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) @@ -34719,21 +34774,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 %panic3656, label %ok3657 +panic3656: + call void @finch_panic(ptr @.str.2310, i64 1483, ptr @.str.2311) unreachable -ok3650: +ok3657: %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 %range3651, label %inrange3652 -range3651: - call void @finch_panic_index(ptr @.str.2308, i64 1483, i64 %t9, i64 %t11) + br i1 %t12, label %range3658, label %inrange3659 +range3658: + call void @finch_panic_index(ptr @.str.2312, i64 1483, i64 %t9, i64 %t11) unreachable -inrange3652: +inrange3659: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -34744,7 +34799,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.2313, 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,7 +34809,7 @@ inrange3652: 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 + 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 @@ -34762,8 +34817,8 @@ inrange3652: %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: + 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 @@ -34775,13 +34830,13 @@ then3653: store i64 %t48, ptr %a49 %t50 = load i64, ptr %a49 %t51 = icmp sge i64 %t50, 0 - br i1 %t51, label %then3656, label %endif3658 -then3656: + br i1 %t51, label %then3663, label %endif3665 +then3663: %t52 = load i64, ptr %a49 ret i64 %t52 -endif3658: - br label %endif3655 -else3654: +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 @@ -34790,31 +34845,31 @@ else3654: store i64 %t57, ptr %a58 %t59 = load i64, ptr %a58 %t60 = icmp sge i64 %t59, 0 - br i1 %t60, label %then3659, label %endif3661 -then3659: + br i1 %t60, label %then3666, label %endif3668 +then3666: %t61 = load i64, ptr %a58 ret i64 %t61 -endif3661: - br label %endif3655 -endif3655: +endif3668: + br label %endif3662 +endif3662: %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) + br i1 %t63, label %panic3669, label %ok3670 +panic3669: + call void @finch_panic(ptr @.str.2315, i64 1496, ptr @.str.2316) unreachable -ok3663: +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 %range3664, label %inrange3665 -range3664: - call void @finch_panic_index(ptr @.str.2313, i64 1496, i64 %t66, i64 %t68) + br i1 %t69, label %range3671, label %inrange3672 +range3671: + call void @finch_panic_index(ptr @.str.2317, i64 1496, i64 %t66, i64 %t68) unreachable -inrange3665: +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 @@ -34823,11 +34878,11 @@ inrange3665: %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) + br i1 %t77, label %range3673, label %inrange3674 +range3673: + call void @finch_panic_index(ptr @.str.2318, i64 1496, i64 %t74, i64 %t76) unreachable -inrange3667: +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 @@ -34884,12 +34939,12 @@ inrange3667: %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 } { 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.2316, i64 1, i64 0 }, ptr %a140 + 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 @@ -34904,8 +34959,8 @@ inrange3667: %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: + 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 @@ -34923,7 +34978,7 @@ then3668: %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 + 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 @@ -34937,12 +34992,12 @@ then3668: %t178 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 %t180 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } { ptr @.str.2318, i64 7, i64 0 }, ptr %a182 + 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.2319, i64 1, i64 0 }, ptr %a187 + 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 @@ -34953,7 +35008,7 @@ then3668: 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 + 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 @@ -34964,15 +35019,15 @@ then3668: %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: + br label %endif3677 +endif3677: %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) + br i1 %t208, label %panic3678, label %ok3679 +panic3678: + call void @finch_panic(ptr @.str.2325, i64 1505, ptr @.str.2326) unreachable -ok3672: +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 @@ -34981,11 +35036,11 @@ ok3672: 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) + br i1 %t216, label %panic3680, label %ok3681 +panic3680: + call void @finch_panic(ptr @.str.2327, i64 1506, ptr @.str.2328) unreachable -ok3674: +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 @@ -34994,11 +35049,11 @@ ok3674: 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) + br i1 %t224, label %panic3682, label %ok3683 +panic3682: + call void @finch_panic(ptr @.str.2329, i64 1507, ptr @.str.2330) unreachable -ok3676: +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 @@ -35007,11 +35062,11 @@ ok3676: store { ptr, i64, i64 } %t229, ptr %a230 %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 %panic3684, label %ok3685 +panic3684: + call void @finch_panic(ptr @.str.2331, i64 1508, ptr @.str.2332) unreachable -ok3678: +ok3685: %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 @@ -35022,11 +35077,11 @@ ok3678: %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) + br i1 %t242, label %panic3686, label %ok3687 +panic3686: + call void @finch_panic(ptr @.str.2333, i64 1509, ptr @.str.2334) unreachable -ok3680: +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) @@ -35035,11 +35090,11 @@ ok3680: %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) + br i1 %t249, label %panic3688, label %ok3689 +panic3688: + call void @finch_panic(ptr @.str.2335, i64 1510, ptr @.str.2336) unreachable -ok3682: +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) @@ -35049,11 +35104,11 @@ ok3682: %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) + br i1 %t257, label %panic3690, label %ok3691 +panic3690: + call void @finch_panic(ptr @.str.2337, i64 1511, ptr @.str.2338) unreachable -ok3684: +ok3691: %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13 store { ptr, i64, i64 } %t255, ptr %a259 call void @finch_str_copy(ptr %a260, ptr %a259) @@ -35061,21 +35116,21 @@ ok3684: 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 } { 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.2336, i64 1, i64 0 }, ptr %a270 + 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 %panic3685, label %ok3686 -panic3685: - call void @finch_panic(ptr @.str.2337, i64 1512, ptr @.str.2338) + br i1 %t273, label %panic3692, label %ok3693 +panic3692: + call void @finch_panic(ptr @.str.2341, i64 1512, ptr @.str.2342) unreachable -ok3686: +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 @@ -35093,11 +35148,11 @@ ok3686: %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) + br i1 %t288, label %range3694, label %inrange3695 +range3694: + call void @finch_panic_index(ptr @.str.2343, i64 1514, i64 %t285, i64 %t287) unreachable -inrange3688: +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 @@ -35110,23 +35165,23 @@ inrange3688: %t298 = load i64, ptr %t297 %t299 = sub i64 %t298, 1 store i64 0, ptr %a300 - br label %for.cond3689 -for.cond3689: + br label %for.cond3696 +for.cond3696: %t301 = load i64, ptr %a300 %t302 = icmp slt i64 %t301, %t299 - br i1 %t302, label %for.body3690, label %for.end3692 -for.body3690: + br i1 %t302, label %for.body3697, label %for.end3699 +for.body3697: %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) + br i1 %t308, label %range3700, label %inrange3701 +range3700: + call void @finch_panic_index(ptr @.str.2344, i64 1516, i64 %t305, i64 %t307) unreachable -inrange3694: +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 @@ -35136,11 +35191,11 @@ inrange3694: %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) + br i1 %t317, label %range3702, label %inrange3703 +range3702: + call void @finch_panic_index(ptr @.str.2345, i64 1516, i64 %t314, i64 %t316) unreachable -inrange3696: +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 @@ -35166,11 +35221,11 @@ inrange3696: %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) + br i1 %t339, label %range3704, label %inrange3705 +range3704: + call void @finch_panic_index(ptr @.str.2346, i64 1518, i64 %t336, i64 %t338) unreachable -inrange3698: +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 @@ -35190,21 +35245,21 @@ inrange3698: %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: + 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 %range3702, label %inrange3703 -range3702: - call void @finch_panic_index(ptr @.str.2343, i64 1519, i64 %t358, i64 %t360) + br i1 %t361, label %range3709, label %inrange3710 +range3709: + call void @finch_panic_index(ptr @.str.2347, i64 1519, i64 %t358, i64 %t360) unreachable -inrange3703: +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 @@ -35212,11 +35267,11 @@ inrange3703: %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 ] + 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)) @@ -35224,21 +35279,21 @@ logic.end3701: %t373 = getelementptr inbounds i1, ptr %t372, i64 %t370 store i1 %t369, ptr %t373 store i64 %t371, ptr %t352 - br label %for.step3691 -for.step3691: + br label %for.step3698 +for.step3698: %t374 = load i64, ptr %a300 %t375 = add i64 %t374, 1 store i64 %t375, ptr %a300 - br label %for.cond3689 -for.end3692: + 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 %panic3705, label %ok3706 -panic3705: - call void @finch_panic(ptr @.str.2344, i64 1521, ptr @.str.2345) + br i1 %t378, label %panic3712, label %ok3713 +panic3712: + call void @finch_panic(ptr @.str.2348, i64 1521, ptr @.str.2349) unreachable -ok3706: +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) @@ -35247,11 +35302,11 @@ ok3706: %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) + br i1 %t385, label %panic3714, label %ok3715 +panic3714: + call void @finch_panic(ptr @.str.2350, i64 1522, ptr @.str.2351) unreachable -ok3708: +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) @@ -35260,11 +35315,11 @@ ok3708: %t390 = load { ptr, i64, i64 }, ptr %a230 %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) + br i1 %t392, label %panic3716, label %ok3717 +panic3716: + call void @finch_panic(ptr @.str.2352, i64 1523, ptr @.str.2353) unreachable -ok3710: +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) @@ -35273,11 +35328,11 @@ ok3710: %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) + br i1 %t399, label %panic3718, label %ok3719 +panic3718: + call void @finch_panic(ptr @.str.2354, i64 1524, ptr @.str.2355) unreachable -ok3712: +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) @@ -35285,11 +35340,11 @@ ok3712: 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) + br i1 %t405, label %panic3720, label %ok3721 +panic3720: + call void @finch_panic(ptr @.str.2356, i64 1525, ptr @.str.2357) unreachable -ok3714: +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 @@ -35305,11 +35360,11 @@ ok3714: 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) + br i1 %t417, label %panic3722, label %ok3723 +panic3722: + call void @finch_panic(ptr @.str.2358, i64 1526, ptr @.str.2359) unreachable -ok3716: +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 @@ -35367,39 +35422,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.2360, 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.from3724 +logic.from3724: + br i1 %t11, label %logic.rhs3725, label %logic.end3726 +logic.rhs3725: %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.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: %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.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: %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 @@ -35407,36 +35462,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.cond3735 +find.cond3735: %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.body3736, label %find.end3739 +find.body3736: %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.hit3737, label %find.next3738 +find.hit3737: store i64 %t29, ptr %a25 - br label %find.end3732 -find.next3731: + br label %find.end3739 +find.next3738: %t37 = add i64 %t29, 1 store i64 %t37, ptr %a28 - br label %find.cond3728 -find.end3732: + br label %find.cond3735 +find.end3739: %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.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: %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 @@ -35444,70 +35499,70 @@ 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.cond3744 +find.cond3744: %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.body3745, label %find.end3748 +find.body3745: %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.hit3746, label %find.next3747 +find.hit3746: store i64 %t48, ptr %a44 - br label %find.end3741 -find.next3740: + br label %find.end3748 +find.next3747: %t56 = add i64 %t48, 1 store i64 %t56, ptr %a47 - br label %find.cond3737 -find.end3741: + br label %find.cond3744 +find.end3748: %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 %panic3749, label %ok3750 +panic3749: + call void @finch_panic(ptr @.str.2361, i64 1533, ptr @.str.2362) unreachable -ok3743: +ok3750: %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 %range3751, label %inrange3752 +range3751: + call void @finch_panic_index(ptr @.str.2363, i64 1533, i64 %t62, i64 %t64) unreachable -inrange3745: +inrange3752: %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 %then3753, label %endif3755 +then3753: %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 %panic3756, label %ok3757 +panic3756: + call void @finch_panic(ptr @.str.2364, i64 1534, ptr @.str.2365) unreachable -ok3750: +ok3757: %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 %range3758, label %inrange3759 +range3758: + call void @finch_panic_index(ptr @.str.2366, i64 1534, i64 %t74, i64 %t76) unreachable -inrange3752: +inrange3759: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 store %S.ast.Type %t70, ptr %a80 @@ -35516,81 +35571,81 @@ inrange3752: 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) + br i1 %t84, label %panic3760, label %ok3761 +panic3760: + call void @finch_panic(ptr @.str.2367, i64 1535, ptr @.str.2368) unreachable -ok3754: +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 %range3755, label %inrange3756 -range3755: - call void @finch_panic_index(ptr @.str.2365, i64 1535, i64 %t86, i64 %t88) + br i1 %t89, label %range3762, label %inrange3763 +range3762: + call void @finch_panic_index(ptr @.str.2369, i64 1535, i64 %t86, i64 %t88) unreachable -inrange3756: +inrange3763: %t90 = extractvalue { ptr, i64, i64 } %t87, 0 %t91 = getelementptr inbounds i1, ptr %t90, i64 %t86 store i1 true, ptr %t91 - br label %endif3748 -endif3748: + br label %endif3755 +endif3755: ret void -endif3736: +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.2366, i64 5, i64 0 }, ptr %a95 + 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.from3757 -logic.from3757: - br i1 %t97, label %logic.end3759, label %logic.rhs3758 -logic.rhs3758: + 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.2367, i64 3, i64 0 }, ptr %a101 + 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.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: + 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.2368, i64 5, i64 0 }, ptr %a108 + 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.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: + 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.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: + 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 @@ -35599,36 +35654,36 @@ logic.rhs3770: 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: + 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.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: + 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 %range3780, label %inrange3781 -range3780: - call void @finch_panic_index(ptr @.str.2369, i64 1540, i64 0, i64 %t134) + br i1 %t135, label %range3787, label %inrange3788 +range3787: + call void @finch_panic_index(ptr @.str.2373, i64 1540, i64 0, i64 %t134) unreachable -inrange3781: +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 @@ -35636,11 +35691,11 @@ inrange3781: %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) + br i1 %t142, label %range3789, label %inrange3790 +range3789: + call void @finch_panic_index(ptr @.str.2374, i64 1540, i64 0, i64 %t141) unreachable -inrange3783: +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 @@ -35648,40 +35703,40 @@ inrange3783: %t147 = load ptr, ptr %a5 call void @finch.gen.bindType(ptr %t131, %S.ast.Type %t138, %S.ast.Type %t145, { ptr, i64, i64 } %t146, ptr %t147) ret void -endif3779: +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.2371, i64 3, i64 0 }, ptr %a151 + 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.from3784 -logic.from3784: - br i1 %t153, label %logic.rhs3785, label %logic.end3786 -logic.rhs3785: + 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.2372, i64 3, i64 0 }, ptr %a157 + 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.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: + 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 %range3791, label %inrange3792 -range3791: - call void @finch_panic_index(ptr @.str.2373, i64 1544, i64 0, i64 %t164) + br i1 %t165, label %range3798, label %inrange3799 +range3798: + call void @finch_panic_index(ptr @.str.2377, i64 1544, i64 0, i64 %t164) unreachable -inrange3792: +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 @@ -35689,11 +35744,11 @@ inrange3792: %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) + br i1 %t172, label %range3800, label %inrange3801 +range3800: + call void @finch_panic_index(ptr @.str.2378, i64 1544, i64 0, i64 %t171) unreachable -inrange3794: +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 @@ -35705,11 +35760,11 @@ inrange3794: %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) + br i1 %t182, label %range3802, label %inrange3803 +range3802: + call void @finch_panic_index(ptr @.str.2379, i64 1545, i64 1, i64 %t181) unreachable -inrange3796: +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 @@ -35717,11 +35772,11 @@ inrange3796: %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) + br i1 %t189, label %range3804, label %inrange3805 +range3804: + call void @finch_panic_index(ptr @.str.2380, i64 1545, i64 1, i64 %t188) unreachable -inrange3798: +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 @@ -35729,50 +35784,50 @@ inrange3798: %t194 = load ptr, ptr %a5 call void @finch.gen.bindType(ptr %t178, %S.ast.Type %t185, %S.ast.Type %t192, { ptr, i64, i64 } %t193, ptr %t194) ret void -endif3790: +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.2377, i64 5, i64 0 }, ptr %a198 + 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.from3799 -logic.from3799: - br i1 %t200, label %logic.rhs3800, label %logic.end3801 -logic.rhs3800: + 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.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: + 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.2378, i64 6, i64 0 }, ptr %a209 + 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.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: + 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 %panic3810, label %ok3811 -panic3810: - call void @finch_panic(ptr @.str.2379, i64 1549, ptr @.str.2380) + br i1 %t214, label %panic3817, label %ok3818 +panic3817: + call void @finch_panic(ptr @.str.2383, i64 1549, ptr @.str.2384) unreachable -ok3811: +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 @@ -35783,11 +35838,11 @@ ok3811: %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) + br i1 %t224, label %range3819, label %inrange3820 +range3819: + call void @finch_panic_index(ptr @.str.2385, i64 1549, i64 %t221, i64 %t223) unreachable -inrange3813: +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 @@ -35803,10 +35858,10 @@ inrange3813: 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: + 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 @@ -35814,34 +35869,34 @@ logic.rhs3815: %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: + 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.cond3821 -for.cond3821: + br label %for.cond3828 +for.cond3828: %t252 = load i64, ptr %a251 %t253 = icmp slt i64 %t252, %t250 - br i1 %t253, label %for.body3822, label %for.end3824 -for.body3822: + 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 %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2382, i64 1552, i64 %t256, i64 %t258) + br i1 %t259, label %range3832, label %inrange3833 +range3832: + call void @finch_panic_index(ptr @.str.2386, i64 1552, i64 %t256, i64 %t258) unreachable -inrange3826: +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 @@ -35850,28 +35905,28 @@ inrange3826: %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) + br i1 %t267, label %range3834, label %inrange3835 +range3834: + call void @finch_panic_index(ptr @.str.2387, i64 1552, i64 %t264, i64 %t266) unreachable -inrange3828: +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.step3823 -for.step3823: + br label %for.step3830 +for.step3830: %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: + br label %for.cond3828 +for.end3831: + br label %endif3827 +endif3827: + br label %endif3816 +endif3816: ret void } @@ -35964,21 +36019,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 %panic3836, label %ok3837 +panic3836: + call void @finch_panic(ptr @.str.2388, i64 1560, ptr @.str.2389) unreachable -ok3830: +ok3837: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 %t9 = load i64, ptr %a3 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range3831, label %inrange3832 -range3831: - call void @finch_panic_index(ptr @.str.2386, i64 1560, i64 %t9, i64 %t11) + br i1 %t12, label %range3838, label %inrange3839 +range3838: + call void @finch_panic_index(ptr @.str.2390, i64 1560, i64 %t9, i64 %t11) unreachable -inrange3832: +inrange3839: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -35988,22 +36043,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 %panic3840, label %ok3841 +panic3840: + call void @finch_panic(ptr @.str.2391, i64 1561, ptr @.str.2392) unreachable -ok3834: +ok3841: %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 %range3842, label %inrange3843 +range3842: + call void @finch_panic_index(ptr @.str.2393, i64 1561, i64 %t24, i64 %t26) unreachable -inrange3836: +inrange3843: %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 @@ -36012,11 +36067,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 %range3844, label %inrange3845 +range3844: + call void @finch_panic_index(ptr @.str.2394, i64 1561, i64 %t32, i64 %t34) unreachable -inrange3838: +inrange3845: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t32 %t38 = load %S.ast.Node, ptr %t37 @@ -36041,8 +36096,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 %then3846, label %endif3848 +then3846: %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 @@ -36051,13 +36106,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 %then3849, label %endif3851 +then3849: %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.2395, 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,7 +36125,7 @@ then3842: 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 + 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 @@ -36084,19 +36139,19 @@ then3842: 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: + 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.cond3845 -each.cond3845: + 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.body3846, label %each.end3848 -each.body3846: + 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 @@ -36113,40 +36168,40 @@ each.body3846: %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: + br label %each.step3854 +each.step3854: %t117 = load i64, ptr %a99 %t118 = add i64 %t117, 1 store i64 %t118, ptr %a99 - br label %each.cond3845 -each.end3848: + 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.2393, i64 4, i64 0 }) + %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.2394, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2395, i64 0, i64 0 }) + %t129 = call %S.gen.Val @finch.gen.callFn(ptr %t119, i64 %t125, %S.ast.Node %t126, i64 %t127, { ptr, i64, i64 } %t128, { ptr, i64, i64 } { ptr @.str.2398, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2399, i64 0, i64 0 }) ret %S.gen.Val %t129 -endif3841: +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.cond3849 -for.cond3849: + br label %for.cond3856 +for.cond3856: %t135 = load i64, ptr %a134 %t136 = icmp slt i64 %t135, %t133 - br i1 %t136, label %for.body3850, label %for.end3852 -for.body3850: + 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.2396, i64 4, i64 0 }) + %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)) @@ -36163,22 +36218,22 @@ for.body3850: %t149 = getelementptr inbounds i1, ptr %t148, i64 %t146 store i1 false, ptr %t149 store i64 %t147, ptr %t145 - br label %for.step3851 -for.step3851: + br label %for.step3858 +for.step3858: %t150 = load i64, ptr %a134 %t151 = add i64 %t150, 1 store i64 %t151, ptr %a134 - br label %for.cond3849 -for.end3852: + 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.cond3853 -for.cond3853: + br label %for.cond3860 +for.cond3860: %t155 = load i64, ptr %a154 %t156 = icmp slt i64 %t155, %t153 - br i1 %t156, label %for.body3854, label %for.end3856 -for.body3854: + 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 @@ -36187,11 +36242,11 @@ for.body3854: %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) + br i1 %t164, label %range3864, label %inrange3865 +range3864: + call void @finch_panic_index(ptr @.str.2401, i64 1581, i64 %t161, i64 %t163) unreachable -inrange3858: +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 @@ -36201,27 +36256,27 @@ inrange3858: %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 + 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.from3859 -logic.from3859: - br i1 %t176, label %logic.end3861, label %logic.rhs3860 -logic.rhs3860: + 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.2399, i64 4, i64 0 }, ptr %a181 + 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.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: + 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 @@ -36230,30 +36285,30 @@ then3863: %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) + br i1 %t192, label %range3873, label %inrange3874 +range3873: + call void @finch_panic_index(ptr @.str.2404, i64 1583, i64 %t189, i64 %t191) unreachable -inrange3867: +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.2402, i64 2, i64 0 }, ptr %a198 + 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.2401, i64 29, i64 0 }, ptr %a202 + 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.2403, i64 5, i64 0 }, ptr %a207 + 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 %endif3865 -endif3865: + 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 @@ -36272,11 +36327,11 @@ endif3865: %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) + br i1 %t223, label %range3875, label %inrange3876 +range3875: + call void @finch_panic_index(ptr @.str.2408, i64 1586, i64 %t220, i64 %t222) unreachable -inrange3869: +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 @@ -36286,39 +36341,39 @@ inrange3869: %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: + br label %for.step3862 +for.step3862: %t232 = load i64, ptr %a154 %t233 = add i64 %t232, 1 store i64 %t233, ptr %a154 - br label %for.cond3853 -for.end3856: + 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.cond3870 -for.cond3870: + br label %for.cond3877 +for.cond3877: %t238 = load i64, ptr %a237 %t239 = icmp slt i64 %t238, %t236 - br i1 %t239, label %for.body3871, label %for.end3873 -for.body3871: + 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 %range3874, label %inrange3875 -range3874: - call void @finch_panic_index(ptr @.str.2405, i64 1589, i64 %t241, i64 %t243) + br i1 %t244, label %range3881, label %inrange3882 +range3881: + call void @finch_panic_index(ptr @.str.2409, i64 1589, i64 %t241, i64 %t243) unreachable -inrange3875: +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 %then3876, label %endif3878 -then3876: + 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 @@ -36326,20 +36381,20 @@ then3876: %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) + br i1 %t255, label %range3886, label %inrange3887 +range3886: + call void @finch_panic_index(ptr @.str.2411, i64 1590, i64 %t252, i64 %t254) unreachable -inrange3880: +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.2406, i64 16, i64 0 }, ptr %a260 + 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.2408, i64 24, i64 0 }, ptr %a265 + 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 @@ -36349,44 +36404,44 @@ inrange3880: 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 + 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 %endif3878 -endif3878: - br label %for.step3872 -for.step3872: + 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.cond3870 -for.end3873: + 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.2410, i64 4, i64 0 }) + %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 %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2411, i64 1594, ptr @.str.2412) + br i1 %t288, label %panic3888, label %ok3889 +panic3888: + call void @finch_panic(ptr @.str.2415, i64 1594, ptr @.str.2416) unreachable -ok3882: +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 %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2413, i64 1594, i64 %t290, i64 %t292) + br i1 %t293, label %range3890, label %inrange3891 +range3890: + call void @finch_panic_index(ptr @.str.2417, i64 1594, i64 %t290, i64 %t292) unreachable -inrange3884: +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 @@ -36401,22 +36456,22 @@ inrange3884: store { ptr, i64, i64 } zeroinitializer, ptr %a304 %t305 = load i64, ptr %a47 store i64 0, ptr %a306 - br label %for.cond3885 -for.cond3885: + br label %for.cond3892 +for.cond3892: %t307 = load i64, ptr %a306 %t308 = icmp slt i64 %t307, %t305 - br i1 %t308, label %for.body3886, label %for.end3888 -for.body3886: + 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 %range3889, label %inrange3890 -range3889: - call void @finch_panic_index(ptr @.str.2414, i64 1598, i64 %t310, i64 %t312) + br i1 %t313, label %range3896, label %inrange3897 +range3896: + call void @finch_panic_index(ptr @.str.2418, i64 1598, i64 %t310, i64 %t312) unreachable -inrange3890: +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 @@ -36425,11 +36480,11 @@ inrange3890: %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) + br i1 %t321, label %range3898, label %inrange3899 +range3898: + call void @finch_panic_index(ptr @.str.2419, i64 1598, i64 %t318, i64 %t320) unreachable -inrange3892: +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 @@ -36440,11 +36495,11 @@ inrange3892: %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) + br i1 %t331, label %range3900, label %inrange3901 +range3900: + call void @finch_panic_index(ptr @.str.2420, i64 1598, i64 %t328, i64 %t330) unreachable -inrange3894: +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 @@ -36453,20 +36508,20 @@ inrange3894: %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) + br i1 %t339, label %range3902, label %inrange3903 +range3902: + call void @finch_panic_index(ptr @.str.2422, i64 1598, i64 %t336, i64 %t338) unreachable -inrange3896: +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.2417, i64 10, i64 0 }, ptr %a344 + 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.2419, i64 1, i64 0 }, ptr %a349 + 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) @@ -36478,17 +36533,17 @@ inrange3896: %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) + br i1 %t359, label %range3904, label %inrange3905 +range3904: + call void @finch_panic_index(ptr @.str.2424, i64 1599, i64 %t356, i64 %t358) unreachable -inrange3898: +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.2421, i64 1, i64 0 }, ptr %a366 + 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 @@ -36504,13 +36559,13 @@ inrange3898: %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: + br label %for.step3894 +for.step3894: %t378 = load i64, ptr %a306 %t379 = add i64 %t378, 1 store i64 %t379, ptr %a306 - br label %for.cond3885 -for.end3888: + 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 @@ -36543,20 +36598,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.cond3914 +n.cond3914: %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.body3915, label %n.end3916 +n.body3915: %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.cond3914 +n.end3916: ret void } @@ -36632,30 +36687,30 @@ entry: 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 %panic3906, label %ok3907 +panic3906: + call void @finch_panic(ptr @.str.2426, i64 1607, ptr @.str.2427) unreachable -ok3900: +ok3907: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24 %t6 = getelementptr inbounds %S.cimport.CImports, ptr %t5, i32 0, i32 3 %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic3901, label %ok3902 -panic3901: - call void @finch_panic(ptr @.str.2424, i64 1607, ptr @.str.2425) + br i1 %t8, label %panic3908, label %ok3909 +panic3908: + call void @finch_panic(ptr @.str.2428, i64 1607, ptr @.str.2429) unreachable -ok3902: +ok3909: %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15 %t10 = load i64, ptr %a2 %t11 = load { ptr, i64, i64 }, ptr %t9 %t12 = extractvalue { ptr, i64, i64 } %t11, 1 %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range3903, label %inrange3904 -range3903: - call void @finch_panic_index(ptr @.str.2426, i64 1607, i64 %t10, i64 %t12) + br i1 %t13, label %range3910, label %inrange3911 +range3910: + call void @finch_panic_index(ptr @.str.2430, i64 1607, i64 %t10, i64 %t12) unreachable -inrange3904: +inrange3911: %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 @@ -36663,14 +36718,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.missing3912, label %map.found3913 +map.missing3912: 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.2431, i64 1607, ptr %a21) unreachable -map.found3906: +map.found3913: %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 @@ -36682,21 +36737,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 %panic3917, label %ok3918 +panic3917: + call void @finch_panic(ptr @.str.2432, i64 1608, ptr @.str.2433) unreachable -ok3911: +ok3918: %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15 %t35 = load i64, ptr %a2 %t36 = load { ptr, i64, i64 }, ptr %t34 %t37 = extractvalue { ptr, i64, i64 } %t36, 1 %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range3912, label %inrange3913 -range3912: - call void @finch_panic_index(ptr @.str.2430, i64 1608, i64 %t35, i64 %t37) + br i1 %t38, label %range3919, label %inrange3920 +range3919: + call void @finch_panic_index(ptr @.str.2434, i64 1608, i64 %t35, i64 %t37) unreachable -inrange3913: +inrange3920: %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 @@ -36705,24 +36760,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.cond3921 +each.cond3921: %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.body3922, label %each.end3924 +each.body3922: %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 %then3925, label %endif3927 +then3925: + br label %each.step3923 +endif3927: %t56 = load ptr, ptr %a1 %t57 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 1 %t58 = load %S.ast.Type, ptr %t57 @@ -36731,11 +36786,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.2435, 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 %then3928, label %endif3930 +then3928: %t67 = load ptr, ptr %a1 %t68 = load ptr, ptr %a1 %t69 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 3 @@ -36744,14 +36799,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 %endif3930 +endif3930: %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 %then3931, label %endif3933 +then3931: %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 @@ -36759,12 +36814,12 @@ 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.2436, 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 + 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 @@ -36774,25 +36829,25 @@ then3924: %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: + br label %endif3933 +endif3933: %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) + br i1 %t98, label %panic3934, label %ok3935 +panic3934: + call void @finch_panic(ptr @.str.2438, i64 1622, ptr @.str.2439) unreachable -ok3928: +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 %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2436, i64 1622, i64 %t100, i64 %t102) + br i1 %t103, label %range3936, label %inrange3937 +range3936: + call void @finch_panic_index(ptr @.str.2440, i64 1622, i64 %t100, i64 %t102) unreachable -inrange3930: +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 @@ -36811,21 +36866,21 @@ inrange3930: 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) + br i1 %t118, label %panic3938, label %ok3939 +panic3938: + call void @finch_panic(ptr @.str.2441, i64 1623, ptr @.str.2442) unreachable -ok3932: +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 %range3933, label %inrange3934 -range3933: - call void @finch_panic_index(ptr @.str.2439, i64 1623, i64 %t120, i64 %t122) + br i1 %t123, label %range3940, label %inrange3941 +range3940: + call void @finch_panic_index(ptr @.str.2443, i64 1623, i64 %t120, i64 %t122) unreachable -inrange3934: +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 @@ -36843,21 +36898,21 @@ inrange3934: 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) + br i1 %t137, label %panic3942, label %ok3943 +panic3942: + call void @finch_panic(ptr @.str.2444, i64 1624, ptr @.str.2445) unreachable -ok3936: +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 %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2442, i64 1624, i64 %t139, i64 %t141) + br i1 %t142, label %range3944, label %inrange3945 +range3944: + call void @finch_panic_index(ptr @.str.2446, i64 1624, i64 %t139, i64 %t141) unreachable -inrange3938: +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 @@ -36873,21 +36928,21 @@ inrange3938: 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) + br i1 %t154, label %panic3946, label %ok3947 +panic3946: + call void @finch_panic(ptr @.str.2447, i64 1625, ptr @.str.2448) unreachable -ok3940: +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 %range3941, label %inrange3942 -range3941: - call void @finch_panic_index(ptr @.str.2445, i64 1625, i64 %t156, i64 %t158) + br i1 %t159, label %range3948, label %inrange3949 +range3948: + call void @finch_panic_index(ptr @.str.2449, i64 1625, i64 %t156, i64 %t158) unreachable -inrange3942: +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 @@ -36918,19 +36973,19 @@ inrange3942: %t181 = load i64, ptr %t180 %t182 = add i64 %t179, %t181 store i64 %t182, ptr %a42 - br label %each.step3916 -each.step3916: + br label %each.step3923 +each.step3923: %t183 = load i64, ptr %a45 %t184 = add i64 %t183, 1 store i64 %t184, ptr %a45 - br label %each.cond3914 -each.end3917: + 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 %then3943, label %endif3945 -then3943: + 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 @@ -36938,12 +36993,12 @@ then3943: %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 } { 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.2447, i64 6, i64 0 }, ptr %a202 + 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 @@ -36953,27 +37008,27 @@ then3943: %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: + 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 %panic3946, label %ok3947 -panic3946: - call void @finch_panic(ptr @.str.2448, i64 1632, ptr @.str.2449) + br i1 %t211, label %panic3953, label %ok3954 +panic3953: + call void @finch_panic(ptr @.str.2452, i64 1632, ptr @.str.2453) unreachable -ok3947: +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 %range3948, label %inrange3949 -range3948: - call void @finch_panic_index(ptr @.str.2450, i64 1632, i64 %t213, i64 %t215) + br i1 %t216, label %range3955, label %inrange3956 +range3955: + call void @finch_panic_index(ptr @.str.2454, i64 1632, i64 %t213, i64 %t215) unreachable -inrange3949: +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 @@ -36983,63 +37038,63 @@ inrange3949: 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: + 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.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: + 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 %panic3957, label %ok3958 -panic3957: - call void @finch_panic(ptr @.str.2452, i64 1634, ptr @.str.2453) + br i1 %t231, label %panic3964, label %ok3965 +panic3964: + call void @finch_panic(ptr @.str.2456, i64 1634, ptr @.str.2457) unreachable -ok3958: +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 %range3959, label %inrange3960 -range3959: - call void @finch_panic_index(ptr @.str.2454, i64 1634, i64 %t233, i64 %t235) + br i1 %t236, label %range3966, label %inrange3967 +range3966: + call void @finch_panic_index(ptr @.str.2458, i64 1634, i64 %t233, i64 %t235) unreachable -inrange3960: +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.2451, i64 49, i64 0 }, ptr %t239 - br label %endif3956 -endif3956: + 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 %panic3961, label %ok3962 -panic3961: - call void @finch_panic(ptr @.str.2455, i64 1636, ptr @.str.2456) + br i1 %t243, label %panic3968, label %ok3969 +panic3968: + call void @finch_panic(ptr @.str.2459, i64 1636, ptr @.str.2460) unreachable -ok3962: +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 %range3963, label %inrange3964 -range3963: - call void @finch_panic_index(ptr @.str.2457, i64 1636, i64 %t245, i64 %t247) + br i1 %t248, label %range3970, label %inrange3971 +range3970: + call void @finch_panic_index(ptr @.str.2461, i64 1636, i64 %t245, i64 %t247) unreachable -inrange3964: +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 @@ -37048,67 +37103,67 @@ inrange3964: %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) + br i1 %t255, label %panic3972, label %ok3973 +panic3972: + call void @finch_panic(ptr @.str.2462, i64 1637, ptr @.str.2463) unreachable -ok3966: +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 %range3967, label %inrange3968 -range3967: - call void @finch_panic_index(ptr @.str.2460, i64 1637, i64 %t257, i64 %t259) + br i1 %t260, label %range3974, label %inrange3975 +range3974: + call void @finch_panic_index(ptr @.str.2464, i64 1637, i64 %t257, i64 %t259) unreachable -inrange3968: +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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2461, i64 1638, ptr @.str.2462) + br i1 %t265, label %panic3976, label %ok3977 +panic3976: + call void @finch_panic(ptr @.str.2465, i64 1638, ptr @.str.2466) unreachable -ok3970: +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 %range3971, label %inrange3972 -range3971: - call void @finch_panic_index(ptr @.str.2463, i64 1638, i64 %t267, i64 %t269) + br i1 %t270, label %range3978, label %inrange3979 +range3978: + call void @finch_panic_index(ptr @.str.2467, i64 1638, i64 %t267, i64 %t269) unreachable -inrange3972: +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 %panic3973, label %ok3974 -panic3973: - call void @finch_panic(ptr @.str.2464, i64 1639, ptr @.str.2465) + br i1 %t275, label %panic3980, label %ok3981 +panic3980: + call void @finch_panic(ptr @.str.2468, i64 1639, ptr @.str.2469) unreachable -ok3974: +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.2466, i64 5, i64 0 }, ptr %a281 + 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.2467, i64 10, i64 0 }, ptr %a286 + 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.2468, i64 2, i64 0 }, ptr %a289 + 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 @@ -37116,7 +37171,7 @@ ok3974: 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 + 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 @@ -37162,95 +37217,95 @@ entry: 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 %panic3982, label %ok3983 +panic3982: + call void @finch_panic(ptr @.str.2474, i64 1643, ptr @.str.2475) unreachable -ok3976: +ok3983: %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 %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2472, i64 1643, i64 %t6, i64 %t8) + br i1 %t9, label %range3984, label %inrange3985 +range3984: + call void @finch_panic_index(ptr @.str.2476, i64 1643, i64 %t6, i64 %t8) unreachable -inrange3978: +inrange3985: %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 %then3986, label %endif3988 +then3986: ret void -endif3981: +endif3988: %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 %panic3989, label %ok3990 +panic3989: + call void @finch_panic(ptr @.str.2477, i64 1646, ptr @.str.2478) unreachable -ok3983: +ok3990: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 %t18 = load i64, ptr %a2 %t19 = load { ptr, i64, i64 }, ptr %t17 %t20 = extractvalue { ptr, i64, i64 } %t19, 1 %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range3984, label %inrange3985 -range3984: - call void @finch_panic_index(ptr @.str.2475, i64 1646, i64 %t18, i64 %t20) + br i1 %t21, label %range3991, label %inrange3992 +range3991: + call void @finch_panic_index(ptr @.str.2479, i64 1646, i64 %t18, i64 %t20) unreachable -inrange3985: +inrange3992: %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 %then3993, label %endif3995 +then3993: %t26 = load ptr, ptr %a1 %t27 = load i64, ptr %a2 call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) ret void -endif3988: +endif3995: %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 %panic3996, label %ok3997 +panic3996: + call void @finch_panic(ptr @.str.2480, i64 1650, ptr @.str.2481) unreachable -ok3990: +ok3997: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 %t31 = load i64, ptr %a2 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range3991, label %inrange3992 -range3991: - call void @finch_panic_index(ptr @.str.2478, i64 1650, i64 %t31, i64 %t33) + br i1 %t34, label %range3998, label %inrange3999 +range3998: + call void @finch_panic_index(ptr @.str.2482, i64 1650, i64 %t31, i64 %t33) unreachable -inrange3992: +inrange3999: %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 %then4000, label %endif4002 +then4000: %t41 = load ptr, ptr %a1 %t42 = load i64, ptr %a2 call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) ret void -endif3995: +endif4002: %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 %panic4003, label %ok4004 +panic4003: + call void @finch_panic(ptr @.str.2483, i64 1655, ptr @.str.2484) unreachable -ok3997: +ok4004: %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17 %t46 = load { ptr, i64, i64 }, ptr %t45 store { ptr, i64, i64 } %t46, ptr %a47 @@ -37259,11 +37314,11 @@ 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 %panic4005, label %ok4006 +panic4005: + call void @finch_panic(ptr @.str.2485, i64 1656, ptr @.str.2486) unreachable -ok3999: +ok4006: %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 @@ -37272,11 +37327,11 @@ 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 %panic4007, label %ok4008 +panic4007: + call void @finch_panic(ptr @.str.2487, i64 1657, ptr @.str.2488) unreachable -ok4001: +ok4008: %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19 %t62 = load { ptr, i64, i64 }, ptr %t61 store { ptr, i64, i64 } %t62, ptr %a63 @@ -37285,32 +37340,32 @@ 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 %panic4009, label %ok4010 +panic4009: + call void @finch_panic(ptr @.str.2489, i64 1658, ptr @.str.2490) unreachable -ok4003: +ok4010: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15 %t70 = load i64, ptr %a2 %t71 = load { ptr, i64, i64 }, ptr %t69 %t72 = extractvalue { ptr, i64, i64 } %t71, 1 %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4004, label %inrange4005 -range4004: - call void @finch_panic_index(ptr @.str.2487, i64 1658, i64 %t70, i64 %t72) + br i1 %t73, label %range4011, label %inrange4012 +range4011: + call void @finch_panic_index(ptr @.str.2491, i64 1658, i64 %t70, i64 %t72) unreachable -inrange4005: +inrange4012: %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 %panic4013, label %ok4014 +panic4013: + call void @finch_panic(ptr @.str.2492, i64 1658, ptr @.str.2493) unreachable -ok4007: +ok4014: %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17 store { ptr, i64, i64 } %t77, ptr %a81 call void @finch.copy.arr_str(ptr %a82, ptr %a81) @@ -37318,32 +37373,32 @@ ok4007: 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) + br i1 %t85, label %panic4015, label %ok4016 +panic4015: + call void @finch_panic(ptr @.str.2494, i64 1659, ptr @.str.2495) unreachable -ok4009: +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 %range4010, label %inrange4011 -range4010: - call void @finch_panic_index(ptr @.str.2492, i64 1659, i64 %t87, i64 %t89) + br i1 %t90, label %range4017, label %inrange4018 +range4017: + call void @finch_panic_index(ptr @.str.2496, i64 1659, i64 %t87, i64 %t89) unreachable -inrange4011: +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 %panic4012, label %ok4013 -panic4012: - call void @finch_panic(ptr @.str.2493, i64 1659, ptr @.str.2494) + br i1 %t96, label %panic4019, label %ok4020 +panic4019: + call void @finch_panic(ptr @.str.2497, i64 1659, ptr @.str.2498) unreachable -ok4013: +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) @@ -37351,40 +37406,40 @@ ok4013: 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) + br i1 %t102, label %panic4021, label %ok4022 +panic4021: + call void @finch_panic(ptr @.str.2500, i64 1660, ptr @.str.2501) unreachable -ok4015: +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 %range4016, label %inrange4017 -range4016: - call void @finch_panic_index(ptr @.str.2498, i64 1660, i64 %t104, i64 %t106) + br i1 %t107, label %range4023, label %inrange4024 +range4023: + call void @finch_panic_index(ptr @.str.2502, i64 1660, i64 %t104, i64 %t106) unreachable -inrange4017: +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.2495, i64 17, i64 0 }, ptr %a113 + 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.2499, i64 1, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.2503, i64 1, i64 0 }, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 %t120 = load ptr, ptr %a1 %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic4018, label %ok4019 -panic4018: - call void @finch_panic(ptr @.str.2500, i64 1660, ptr @.str.2501) + br i1 %t121, label %panic4025, label %ok4026 +panic4025: + call void @finch_panic(ptr @.str.2504, i64 1660, ptr @.str.2505) unreachable -ok4019: +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 @@ -37393,11 +37448,11 @@ ok4019: %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) + br i1 %t127, label %panic4027, label %ok4028 +panic4027: + call void @finch_panic(ptr @.str.2506, i64 1662, ptr @.str.2507) unreachable -ok4021: +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) @@ -37406,11 +37461,11 @@ ok4021: %t132 = load { ptr, i64, i64 }, ptr %a58 %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 %panic4029, label %ok4030 +panic4029: + call void @finch_panic(ptr @.str.2508, i64 1663, ptr @.str.2509) unreachable -ok4023: +ok4030: %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) @@ -37419,11 +37474,11 @@ ok4023: %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) + br i1 %t141, label %panic4031, label %ok4032 +panic4031: + call void @finch_panic(ptr @.str.2510, i64 1664, ptr @.str.2511) unreachable -ok4025: +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) @@ -37499,29 +37554,29 @@ entry: 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 %panic4033, label %ok4034 +panic4033: + call void @finch_panic(ptr @.str.2512, i64 1668, ptr @.str.2513) unreachable -ok4027: +ok4034: %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 %panic4035, label %ok4036 +panic4035: + call void @finch_panic(ptr @.str.2514, i64 1668, ptr @.str.2515) unreachable -ok4029: +ok4036: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 %t9 = load i64, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2512, i64 1668, i64 %t9, i64 %t11) + br i1 %t12, label %range4037, label %inrange4038 +range4037: + call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t9, i64 %t11) unreachable -inrange4031: +inrange4038: %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 @@ -37529,31 +37584,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 %range4039, label %inrange4040 +range4039: + call void @finch_panic_index(ptr @.str.2517, i64 1668, i64 %t16, i64 %t18) unreachable -inrange4033: +inrange4040: %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 %panic4041, label %ok4042 +panic4041: + call void @finch_panic(ptr @.str.2518, i64 1668, ptr @.str.2519) unreachable -ok4035: +ok4042: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15 %t26 = load i64, ptr %a2 %t27 = load { ptr, i64, i64 }, ptr %t25 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4036, label %inrange4037 -range4036: - call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t26, i64 %t28) + br i1 %t29, label %range4043, label %inrange4044 +range4043: + call void @finch_panic_index(ptr @.str.2520, i64 1668, i64 %t26, i64 %t28) unreachable -inrange4037: +inrange4044: %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 @@ -37561,11 +37616,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 %range4045, label %inrange4046 +range4045: + call void @finch_panic_index(ptr @.str.2521, i64 1668, i64 %t33, i64 %t35) unreachable -inrange4039: +inrange4046: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -37575,38 +37630,38 @@ 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 %panic4047, label %ok4048 +panic4047: + call void @finch_panic(ptr @.str.2522, i64 1669, ptr @.str.2523) unreachable -ok4041: +ok4048: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15 %t47 = load i64, ptr %a2 %t48 = load { ptr, i64, i64 }, ptr %t46 %t49 = extractvalue { ptr, i64, i64 } %t48, 1 %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4042, label %inrange4043 -range4042: - call void @finch_panic_index(ptr @.str.2520, i64 1669, i64 %t47, i64 %t49) + br i1 %t50, label %range4049, label %inrange4050 +range4049: + call void @finch_panic_index(ptr @.str.2524, i64 1669, i64 %t47, i64 %t49) unreachable -inrange4043: +inrange4050: %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 %then4051, label %endif4053 +then4051: %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.2525, 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.2526, 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 @@ -37616,7 +37671,7 @@ then4044: 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 + 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 @@ -37626,40 +37681,40 @@ then4044: 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 + 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 %endif4046 -endif4046: + br label %endif4053 +endif4053: %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) + br i1 %t89, label %panic4054, label %ok4055 +panic4054: + call void @finch_panic(ptr @.str.2529, i64 1672, ptr @.str.2530) unreachable -ok4048: +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 %range4049, label %inrange4050 -range4049: - call void @finch_panic_index(ptr @.str.2527, i64 1672, i64 %t91, i64 %t93) + br i1 %t94, label %range4056, label %inrange4057 +range4056: + call void @finch_panic_index(ptr @.str.2531, i64 1672, i64 %t91, i64 %t93) unreachable -inrange4050: +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 %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2528, i64 1673, ptr @.str.2529) + br i1 %t99, label %panic4058, label %ok4059 +panic4058: + call void @finch_panic(ptr @.str.2532, i64 1673, ptr @.str.2533) unreachable -ok4052: +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 @@ -37668,32 +37723,32 @@ ok4052: 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) + br i1 %t107, label %panic4060, label %ok4061 +panic4060: + call void @finch_panic(ptr @.str.2534, i64 1674, ptr @.str.2535) unreachable -ok4054: +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 %range4055, label %inrange4056 -range4055: - call void @finch_panic_index(ptr @.str.2532, i64 1674, i64 %t109, i64 %t111) + br i1 %t112, label %range4062, label %inrange4063 +range4062: + call void @finch_panic_index(ptr @.str.2536, i64 1674, i64 %t109, i64 %t111) unreachable -inrange4056: +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 %panic4057, label %ok4058 -panic4057: - call void @finch_panic(ptr @.str.2533, i64 1674, ptr @.str.2534) + br i1 %t118, label %panic4064, label %ok4065 +panic4064: + call void @finch_panic(ptr @.str.2537, i64 1674, ptr @.str.2538) unreachable -ok4058: +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) @@ -37703,14 +37758,14 @@ ok4058: 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: + 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.body4060, label %each.end4062 -each.body4060: + 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 @@ -37724,11 +37779,11 @@ each.body4060: %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 + 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 %then4063, label %endif4065 -then4063: + 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 @@ -37737,46 +37792,46 @@ then4063: %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: + br label %endif4072 +endif4072: %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) + br i1 %t155, label %panic4073, label %ok4074 +panic4073: + call void @finch_panic(ptr @.str.2540, i64 1682, ptr @.str.2541) unreachable -ok4067: +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 %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2538, i64 1682, i64 %t157, i64 %t159) + br i1 %t160, label %range4075, label %inrange4076 +range4075: + call void @finch_panic_index(ptr @.str.2542, i64 1682, i64 %t157, i64 %t159) unreachable -inrange4069: +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 %panic4070, label %ok4071 -panic4070: - call void @finch_panic(ptr @.str.2539, i64 1682, ptr @.str.2540) + br i1 %t166, label %panic4077, label %ok4078 +panic4077: + call void @finch_panic(ptr @.str.2543, i64 1682, ptr @.str.2544) unreachable -ok4071: +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 %range4072, label %inrange4073 -range4072: - call void @finch_panic_index(ptr @.str.2541, i64 1682, i64 %t168, i64 %t170) + br i1 %t171, label %range4079, label %inrange4080 +range4079: + call void @finch_panic_index(ptr @.str.2545, i64 1682, i64 %t168, i64 %t170) unreachable -inrange4073: +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 @@ -37791,21 +37846,21 @@ inrange4073: 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) + br i1 %t182, label %panic4081, label %ok4082 +panic4081: + call void @finch_panic(ptr @.str.2546, i64 1683, ptr @.str.2547) unreachable -ok4075: +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 %range4076, label %inrange4077 -range4076: - call void @finch_panic_index(ptr @.str.2544, i64 1683, i64 %t184, i64 %t186) + br i1 %t187, label %range4083, label %inrange4084 +range4083: + call void @finch_panic_index(ptr @.str.2548, i64 1683, i64 %t184, i64 %t186) unreachable -inrange4077: +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 @@ -37824,21 +37879,21 @@ inrange4077: 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) + br i1 %t202, label %panic4085, label %ok4086 +panic4085: + call void @finch_panic(ptr @.str.2549, i64 1684, ptr @.str.2550) unreachable -ok4079: +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 %range4080, label %inrange4081 -range4080: - call void @finch_panic_index(ptr @.str.2547, i64 1684, i64 %t204, i64 %t206) + br i1 %t207, label %range4087, label %inrange4088 +range4087: + call void @finch_panic_index(ptr @.str.2551, i64 1684, i64 %t204, i64 %t206) unreachable -inrange4081: +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 @@ -37857,11 +37912,11 @@ inrange4081: %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: + br i1 %t222, label %then4089, label %endif4091 +then4089: store i1 true, ptr %a123 - br label %endif4084 -endif4084: + 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 @@ -37873,31 +37928,31 @@ endif4084: %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: + br label %each.step4068 +each.step4068: %t231 = load i64, ptr %a126 %t232 = add i64 %t231, 1 store i64 %t232, ptr %a126 - br label %each.cond4059 -each.end4062: + 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 %panic4085, label %ok4086 -panic4085: - call void @finch_panic(ptr @.str.2548, i64 1690, ptr @.str.2549) + br i1 %t235, label %panic4092, label %ok4093 +panic4092: + call void @finch_panic(ptr @.str.2552, i64 1690, ptr @.str.2553) unreachable -ok4086: +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 %range4087, label %inrange4088 -range4087: - call void @finch_panic_index(ptr @.str.2550, i64 1690, i64 %t237, i64 %t239) + br i1 %t240, label %range4094, label %inrange4095 +range4094: + call void @finch_panic_index(ptr @.str.2554, i64 1690, i64 %t237, i64 %t239) unreachable -inrange4088: +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 @@ -37905,11 +37960,11 @@ inrange4088: %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) + br i1 %t246, label %panic4096, label %ok4097 +panic4096: + call void @finch_panic(ptr @.str.2555, i64 1691, ptr @.str.2556) unreachable -ok4090: +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) @@ -37917,81 +37972,81 @@ ok4090: 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) + br i1 %t252, label %panic4098, label %ok4099 +panic4098: + call void @finch_panic(ptr @.str.2557, i64 1692, ptr @.str.2558) unreachable -ok4092: +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 %range4093, label %inrange4094 -range4093: - call void @finch_panic_index(ptr @.str.2555, i64 1692, i64 %t254, i64 %t256) + br i1 %t257, label %range4100, label %inrange4101 +range4100: + call void @finch_panic_index(ptr @.str.2559, i64 1692, i64 %t254, i64 %t256) unreachable -inrange4094: +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 %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 %panic4102, label %ok4103 +panic4102: + call void @finch_panic(ptr @.str.2560, i64 1693, ptr @.str.2561) unreachable -ok4096: +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 %panic4097, label %ok4098 -panic4097: - call void @finch_panic(ptr @.str.2559, i64 1693, ptr @.str.2560) + br i1 %t266, label %panic4104, label %ok4105 +panic4104: + call void @finch_panic(ptr @.str.2563, i64 1693, ptr @.str.2564) unreachable -ok4098: +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 %range4099, label %inrange4100 -range4099: - call void @finch_panic_index(ptr @.str.2561, i64 1693, i64 %t268, i64 %t270) + br i1 %t271, label %range4106, label %inrange4107 +range4106: + call void @finch_panic_index(ptr @.str.2565, i64 1693, i64 %t268, i64 %t270) unreachable -inrange4100: +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.2558, i64 3, i64 0 }, ptr %a278 + 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.2562, i64 1, i64 0 }, ptr %a283 + 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 %panic4101, label %ok4102 -panic4101: - call void @finch_panic(ptr @.str.2563, i64 1693, ptr @.str.2564) + br i1 %t286, label %panic4108, label %ok4109 +panic4108: + call void @finch_panic(ptr @.str.2567, i64 1693, ptr @.str.2568) unreachable -ok4102: +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 %range4103, label %inrange4104 -range4103: - call void @finch_panic_index(ptr @.str.2565, i64 1693, i64 %t288, i64 %t290) + br i1 %t291, label %range4110, label %inrange4111 +range4110: + call void @finch_panic_index(ptr @.str.2569, i64 1693, i64 %t288, i64 %t290) unreachable -inrange4104: +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 @@ -38002,11 +38057,11 @@ inrange4104: 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 + 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.2567, i64 2, i64 0 }, ptr %a306 + 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 @@ -38014,7 +38069,7 @@ inrange4104: 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 + 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 @@ -38037,11 +38092,11 @@ 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 %panic4112, label %ok4113 +panic4112: + call void @finch_panic(ptr @.str.2573, i64 1702, ptr @.str.2574) unreachable -ok4106: +ok4113: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load { ptr, i64, i64 }, ptr %a2 @@ -38057,11 +38112,11 @@ 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 %panic4114, label %ok4115 +panic4114: + call void @finch_panic(ptr @.str.2575, i64 1703, ptr @.str.2576) unreachable -ok4108: +ok4115: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 31 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 @@ -38079,14 +38134,14 @@ entry: 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 %then4116, label %endif4118 +then4116: + ret { ptr, i64, i64 } { ptr @.str.2577, i64 4, i64 0 } +endif4118: %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.2578, 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 @@ -38101,22 +38156,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 %then4119, label %endif4121 +then4119: %t5 = load i64, ptr %a1 ret i64 %t5 -endif4114: +endif4121: %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 %panic4122, label %ok4123 +panic4122: + call void @finch_panic(ptr @.str.2579, i64 1722, ptr @.str.2580) unreachable -ok4116: +ok4123: %t12 = sdiv i64 %t9, %t10 %t13 = load i64, ptr %a2 %t14 = mul i64 %t12, %t13 @@ -38179,188 +38234,188 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.2577, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2581, 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.from4124 +logic.from4124: + br i1 %t13, label %logic.end4126, label %logic.rhs4125 +logic.rhs4125: %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.2582, 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.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: %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.2583, 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: - %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 - %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: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - ret %S.gen.SizeAlign %t33 -endif4131: - %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 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 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 %t38, label %logic.end4134, label %logic.rhs4133 + br i1 %t25, label %logic.end4134, label %logic.rhs4133 logic.rhs4133: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2582, i64 3, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 + %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 + %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: - %t44 = phi i1 [ true, %logic.from4132 ], [ %t43, %logic.rend4135 ] - br i1 %t44, label %then4136, label %endif4138 + %t31 = phi i1 [ true, %logic.from4132 ], [ %t30, %logic.rend4135 ] + br i1 %t31, label %then4136, label %endif4138 then4136: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - ret %S.gen.SizeAlign %t46 + %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 + %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 + ret %S.gen.SizeAlign %t33 endif4138: - %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 - %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) - %t51 = icmp ne i32 %t50, 0 + %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 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 br label %logic.from4139 logic.from4139: - br i1 %t51, label %logic.end4141, label %logic.rhs4140 + br i1 %t38, label %logic.end4141, label %logic.rhs4140 logic.rhs4140: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2584, i64 3, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 + %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 + %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: - %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: + %t44 = phi i1 [ true, %logic.from4139 ], [ %t43, %logic.rend4142 ] + br i1 %t44, label %then4143, label %endif4145 +then4143: + %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 + %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 + ret %S.gen.SizeAlign %t46 +endif4145: + %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 + %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: + %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 + %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: %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.2589, 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: - %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 - %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: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - ret %S.gen.SizeAlign %t71 -endif4153: - %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 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 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 %t76, label %logic.end4156, label %logic.rhs4155 + br i1 %t63, label %logic.end4156, label %logic.rhs4155 logic.rhs4155: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2588, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 + %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 + %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: - %t82 = phi i1 [ true, %logic.from4154 ], [ %t81, %logic.rend4157 ] - br i1 %t82, label %then4158, label %endif4160 + %t69 = phi i1 [ true, %logic.from4154 ], [ %t68, %logic.rend4157 ] + br i1 %t69, label %then4158, label %endif4160 then4158: + %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 + %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 + ret %S.gen.SizeAlign %t71 +endif4160: + %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 + %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: + %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 + %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: %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 ret %S.gen.SizeAlign %t84 -endif4160: +endif4167: %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.2593, 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 %then4168, label %endif4170 +then4168: %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 ret %S.gen.SizeAlign %t91 -endif4163: +endif4170: %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.2594, 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 %then4171, label %endif4173 +then4171: %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 %range4174, label %inrange4175 +range4174: + call void @finch_panic_index(ptr @.str.2595, i64 1744, i64 0, i64 %t100) unreachable -inrange4168: +inrange4175: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -38376,21 +38431,21 @@ inrange4168: %t114 = load i64, ptr %t113 %t115 = insertvalue %S.gen.SizeAlign %t112, i64 %t114, 1 ret %S.gen.SizeAlign %t115 -endif4166: +endif4173: %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.2596, 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 %then4176, label %endif4178 +then4176: %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 %panic4179, label %ok4180 +panic4179: + call void @finch_panic(ptr @.str.2597, i64 1748, ptr @.str.2598) unreachable -ok4173: +ok4180: %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15 %t124 = load ptr, ptr %a1 %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -38401,11 +38456,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 %range4181, label %inrange4182 +range4181: + call void @finch_panic_index(ptr @.str.2599, i64 1748, i64 %t129, i64 %t131) unreachable -inrange4175: +inrange4182: %t133 = extractvalue { ptr, i64, i64 } %t130, 0 %t134 = getelementptr inbounds %S.gen.StructDef, ptr %t133, i64 %t129 %t135 = load %S.gen.StructDef, ptr %t134 @@ -38415,8 +38470,8 @@ 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 %then4183, label %endif4185 +then4183: %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 @@ -38424,19 +38479,19 @@ then4176: %t146 = load i64, ptr %t145 %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 ret %S.gen.SizeAlign %t147 -endif4178: +endif4185: 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.cond4186 +each.cond4186: %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.body4187, label %each.end4189 +each.body4187: %t156 = load ptr, ptr %t150 %t157 = getelementptr inbounds %S.ast.Type, ptr %t156, i64 %t154 %t158 = load %S.ast.Type, ptr %t157 @@ -38457,20 +38512,20 @@ 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 %then4190, label %endif4192 +then4190: %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 %endif4192 +endif4192: + br label %each.step4188 +each.step4188: %t177 = load i64, ptr %a151 %t178 = add i64 %t177, 1 store i64 %t178, ptr %a151 - br label %each.cond4179 -each.end4182: + br label %each.cond4186 +each.end4189: %t179 = load i64, ptr %a148 %t180 = load i64, ptr %a149 %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) @@ -38478,7 +38533,7 @@ each.end4182: %t183 = load i64, ptr %a149 %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 ret %S.gen.SizeAlign %t184 -endif4171: +endif4178: %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 ret %S.gen.SizeAlign %t186 @@ -38501,27 +38556,27 @@ entry: store %S.gen.StructDef %p1, ptr %a2 %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 2 %t4 = load i1, ptr %t3 - br i1 %t4, label %then4186, label %endif4188 -then4186: + br i1 %t4, label %then4193, label %endif4195 +then4193: %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: +endif4195: 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.cond4196 +each.cond4196: %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.body4197, label %each.end4199 +each.body4197: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds %S.ast.Type, ptr %t18, i64 %t16 %t20 = load %S.ast.Type, ptr %t19 @@ -38549,13 +38604,13 @@ 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.step4198 +each.step4198: %t40 = load i64, ptr %a13 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a13 - br label %each.cond4189 -each.end4192: + br label %each.cond4196 +each.end4199: %t42 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t42, ptr %a43 call void @finch.copy.arr_int(ptr %a44, ptr %a43) @@ -38630,12 +38685,12 @@ entry: store i64 %p7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2596, i64 42, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.2600, 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.2601, 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 @@ -38646,7 +38701,7 @@ entry: call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2598, i64 9, i64 0 }, ptr %a28 + 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 @@ -38657,7 +38712,7 @@ entry: call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.2599, i64 8, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.2603, i64 8, i64 0 }, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 %t41 = load i64, ptr %a5 @@ -38668,7 +38723,7 @@ entry: call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2600, i64 12, i64 0 }, ptr %a50 + 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 @@ -38678,7 +38733,7 @@ entry: call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2601, i64 8, i64 0 }, ptr %a60 + 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 @@ -38689,7 +38744,7 @@ entry: call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.2602, i64 10, i64 0 }, ptr %a71 + 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 @@ -38700,7 +38755,7 @@ entry: call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.2603, i64 1, i64 0 }, ptr %a82 + 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) @@ -38738,12 +38793,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2604, i64 20, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2608, 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.2609, 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 @@ -38754,7 +38809,7 @@ entry: call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.2606, i64 12, i64 0 }, ptr %a24 + 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 @@ -38763,7 +38818,7 @@ entry: call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2607, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.2611, i64 1, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t34) @@ -39032,168 +39087,168 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.2608, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2612, 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.from4200 +logic.from4200: + br i1 %t13, label %logic.end4202, label %logic.rhs4201 +logic.rhs4201: %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.2613, 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.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: ret i64 -1 -endif4199: +endif4206: %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.2614, 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) + br i1 %t28, label %panic4207, label %ok4208 +panic4207: + call void @finch_panic(ptr @.str.2615, i64 1797, ptr @.str.2616) unreachable -ok4201: +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 %then4202, label %endif4204 -then4202: + br i1 %t33, label %then4209, label %endif4211 +then4209: %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) + br i1 %t35, label %panic4212, label %ok4213 +panic4212: + call void @finch_panic(ptr @.str.2617, i64 1798, ptr @.str.2618) unreachable -ok4206: +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.missing4207, label %map.found4208 -map.missing4207: + 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.2615, i64 1798, ptr %a41) + call void @finch_map_missing(ptr @.str.2619, i64 1798, ptr %a41) unreachable -map.found4208: +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 -endif4204: +endif4211: 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) + br i1 %t50, label %panic4216, label %ok4217 +panic4216: + call void @finch_panic(ptr @.str.2620, i64 1801, ptr @.str.2621) unreachable -ok4210: +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 %range4211, label %inrange4212 -range4211: - call void @finch_panic_index(ptr @.str.2618, i64 1801, i64 0, i64 %t53) + br i1 %t54, label %range4218, label %inrange4219 +range4218: + call void @finch_panic_index(ptr @.str.2622, i64 1801, i64 0, i64 %t53) unreachable -inrange4212: +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.2619, i64 4, i64 0 }, ptr %a61 + 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 %then4213, label %else4214 -then4213: + 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.2620, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2621, i64 14, i64 0 }) + %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 %endif4215 -else4214: + br label %endif4222 +else4221: %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 + 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 %then4216, label %else4217 -then4216: + 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.2623, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2624, i64 18, i64 0 }) + %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 %endif4218 -else4217: + br label %endif4225 +else4224: %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 + 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 %then4219, label %else4220 -then4219: + 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.2626, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2627, i64 13, i64 0 }) + %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 %endif4221 -else4220: + br label %endif4228 +else4227: %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 + 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 %then4222, label %else4223 -then4222: + 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.2629, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2630, i64 12, i64 0 }) + %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 %endif4224 -else4223: + br label %endif4231 +else4230: %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 + 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 %then4225, label %else4226 -then4225: + 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.2632, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2633, i64 12, i64 0 }) + %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 %endif4227 -else4226: + 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 %then4228, label %else4229 -then4228: - store { ptr, i64, i64 } { ptr @.str.2634, i64 15, i64 0 }, ptr %a96 + 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 %then4231, label %endif4233 -then4231: - store { ptr, i64, i64 } { ptr @.str.2635, i64 13, i64 0 }, ptr %a96 - br label %endif4233 -endif4233: + 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 @@ -39201,22 +39256,22 @@ endif4233: %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: + br label %endif4237 +else4236: %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 + 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 %then4234, label %else4235 -then4234: + br i1 %t109, label %then4241, label %else4242 +then4241: %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) + br i1 %t111, label %panic4244, label %ok4245 +panic4244: + call void @finch_panic(ptr @.str.2641, i64 1819, ptr @.str.2642) unreachable -ok4238: +ok4245: %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 20 %t113 = load ptr, ptr %a1 %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -39227,11 +39282,11 @@ ok4238: %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) + br i1 %t121, label %range4246, label %inrange4247 +range4246: + call void @finch_panic_index(ptr @.str.2643, i64 1819, i64 %t118, i64 %t120) unreachable -inrange4240: +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 @@ -39244,12 +39299,12 @@ inrange4240: %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: + br label %for.cond4248 +for.cond4248: %t134 = load i64, ptr %a133 %t135 = icmp slt i64 %t134, %t132 - br i1 %t135, label %for.body4242, label %for.end4244 -for.body4242: + 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 @@ -39257,20 +39312,20 @@ for.body4242: %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) + br i1 %t142, label %range4252, label %inrange4253 +range4252: + call void @finch_panic_index(ptr @.str.2645, i64 1822, i64 %t139, i64 %t141) unreachable -inrange4246: +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.2640, i64 21, i64 0 }, ptr %a147 + 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.2642, i64 10, i64 0 }, ptr %a152 + 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 @@ -39278,11 +39333,11 @@ inrange4246: %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) + br i1 %t158, label %range4254, label %inrange4255 +range4254: + call void @finch_panic_index(ptr @.str.2647, i64 1822, i64 %t155, i64 %t157) unreachable -inrange4248: +inrange4255: %t159 = extractvalue { ptr, i64, i64 } %t156, 0 %t160 = getelementptr inbounds i64, ptr %t159, i64 %t155 %t161 = load i64, ptr %t160 @@ -39293,7 +39348,7 @@ inrange4248: 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 + store { ptr, i64, i64 } { ptr @.str.2648, i64 1, i64 0 }, ptr %a170 call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) %t171 = load { ptr, i64, i64 }, ptr %a168 %t172 = call i64 @finch.gen.md(ptr %t137, { ptr, i64, i64 } %t171) @@ -39305,22 +39360,22 @@ inrange4248: %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: + br label %for.step4250 +for.step4250: %t178 = load i64, ptr %a133 %t179 = add i64 %t178, 1 store i64 %t179, ptr %a133 - br label %for.cond4241 -for.end4244: + 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.2645, i64 54, i64 0 }, ptr %a184 + 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.2646, i64 10, i64 0 }, ptr %a189 + 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 @@ -39331,11 +39386,11 @@ for.end4244: 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 + 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.2648, i64 2, i64 0 }, ptr %a203 + 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 @@ -39343,24 +39398,24 @@ for.end4244: 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 + 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 %endif4236 -else4235: + br label %endif4243 +else4242: %t215 = load ptr, ptr %a1 - %t216 = call i64 @finch.gen.md(ptr %t215, { ptr, i64, i64 } { ptr @.str.2650, i64 0, i64 0 }) + %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 %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2651, i64 1828, ptr @.str.2652) + br i1 %t219, label %panic4256, label %ok4257 +panic4256: + call void @finch_panic(ptr @.str.2655, i64 1828, ptr @.str.2656) unreachable -ok4250: +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 @@ -39371,96 +39426,96 @@ ok4250: %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: + 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.have4252 -map.have4252: + 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.2653, i64 3, i64 0 }, ptr %a235 + 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 %then4253, label %else4254 -then4253: + 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 %then4256, label %endif4258 -then4256: + 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 %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2654, i64 1832, i64 0, i64 %t246) + br i1 %t247, label %range4266, label %inrange4267 +range4266: + call void @finch_panic_index(ptr @.str.2658, i64 1832, i64 0, i64 %t246) unreachable -inrange4260: +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 %endif4258 -endif4258: + 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.2655, i64 51, i64 0 }, ptr %a255 + 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.2656, i64 11, i64 0 }, ptr %a260 + 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 %panic4261, label %ok4262 -panic4261: - call void @finch_panic(ptr @.str.2657, i64 1834, ptr @.str.2658) + br i1 %t263, label %panic4268, label %ok4269 +panic4268: + call void @finch_panic(ptr @.str.2661, i64 1834, ptr @.str.2662) unreachable -ok4262: +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 %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2659, i64 1834, i64 %t265, i64 %t267) + br i1 %t268, label %range4270, label %inrange4271 +range4270: + call void @finch_panic_index(ptr @.str.2663, i64 1834, i64 %t265, i64 %t267) unreachable -inrange4264: +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 %endif4255 -else4254: + br label %endif4262 +else4261: %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 + 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 %then4265, label %else4266 -then4265: + 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 %range4268, label %inrange4269 -range4268: - call void @finch_panic_index(ptr @.str.2661, i64 1836, i64 0, i64 %t279) + br i1 %t280, label %range4275, label %inrange4276 +range4275: + call void @finch_panic_index(ptr @.str.2665, i64 1836, i64 0, i64 %t279) unreachable -inrange4269: +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 @@ -39471,12 +39526,12 @@ inrange4269: %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 } { 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.2663, i64 1, i64 0 }, ptr %a297 + 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) @@ -39486,22 +39541,22 @@ inrange4269: %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) + br i1 %t305, label %range4277, label %inrange4278 +range4277: + call void @finch_panic_index(ptr @.str.2669, i64 1838, i64 0, i64 %t304) unreachable -inrange4271: +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.2664, i64 51, i64 0 }, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.2668, i64 51, i64 0 }, ptr %a312 store { ptr, i64, i64 } %t310, ptr %a313 call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) %t314 = load { ptr, i64, i64 }, ptr %a311 store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2666, i64 8, i64 0 }, ptr %a317 + 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 @@ -39517,7 +39572,7 @@ inrange4271: 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 + 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 @@ -39528,70 +39583,70 @@ inrange4271: 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 + 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 %panic4272, label %ok4273 -panic4272: - call void @finch_panic(ptr @.str.2669, i64 1838, ptr @.str.2670) + br i1 %t347, label %panic4279, label %ok4280 +panic4279: + call void @finch_panic(ptr @.str.2673, i64 1838, ptr @.str.2674) unreachable -ok4273: +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 %range4274, label %inrange4275 -range4274: - call void @finch_panic_index(ptr @.str.2671, i64 1838, i64 %t349, i64 %t351) + br i1 %t352, label %range4281, label %inrange4282 +range4281: + call void @finch_panic_index(ptr @.str.2675, i64 1838, i64 %t349, i64 %t351) unreachable -inrange4275: +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 %endif4267 -else4266: + br label %endif4274 +else4273: %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 + 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.from4276 -logic.from4276: - br i1 %t359, label %logic.end4278, label %logic.rhs4277 -logic.rhs4277: + 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.2673, i64 5, i64 0 }, ptr %a362 + 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.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 }) + 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.2675, i64 5, i64 0 }, ptr %a370 + 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 %then4283, label %endif4285 -then4283: + 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 %range4286, label %inrange4287 -range4286: - call void @finch_panic_index(ptr @.str.2676, i64 1842, i64 0, i64 %t375) + br i1 %t376, label %range4293, label %inrange4294 +range4293: + call void @finch_panic_index(ptr @.str.2680, i64 1842, i64 0, i64 %t375) unreachable -inrange4287: +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 @@ -39599,53 +39654,53 @@ inrange4287: 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: + 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.2677, i64 51, i64 0 }, ptr %a389 + 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.2678, i64 11, i64 0 }, ptr %a394 + 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.2679, i64 3, i64 0 }) + %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.2680, i64 3, i64 0 }, i64 %t403, i64 %t404, i64 0, i64 %t405, i64 64, i64 0) + %t406 = call i64 @finch.gen.dbgMember(ptr %t402, { ptr, i64, i64 } { ptr @.str.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.2681, i64 3, i64 0 }, i64 %t409, i64 %t410, i64 0, i64 %t411, i64 64, i64 64) + %t412 = call i64 @finch.gen.dbgMember(ptr %t408, { ptr, i64, i64 } { ptr @.str.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.2682, i64 3, i64 0 }, i64 %t415, i64 %t416, i64 0, i64 %t417, i64 64, i64 128) + %t418 = call i64 @finch.gen.dbgMember(ptr %t414, { ptr, i64, i64 } { ptr @.str.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.2683, i64 52, i64 0 }, ptr %a423 + 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.2684, i64 10, i64 0 }, ptr %a428 + 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 @@ -39656,7 +39711,7 @@ endif4285: 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 + 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 @@ -39667,7 +39722,7 @@ endif4285: 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 + 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 @@ -39678,7 +39733,7 @@ endif4285: 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 + 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 @@ -39689,105 +39744,105 @@ endif4285: 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 + 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 %panic4288, label %ok4289 -panic4288: - call void @finch_panic(ptr @.str.2689, i64 1849, ptr @.str.2690) + br i1 %t475, label %panic4295, label %ok4296 +panic4295: + call void @finch_panic(ptr @.str.2693, i64 1849, ptr @.str.2694) unreachable -ok4289: +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 %range4290, label %inrange4291 -range4290: - call void @finch_panic_index(ptr @.str.2691, i64 1849, i64 %t477, i64 %t479) + br i1 %t480, label %range4297, label %inrange4298 +range4297: + call void @finch_panic_index(ptr @.str.2695, i64 1849, i64 %t477, i64 %t479) unreachable -inrange4291: +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 %endif4282 -else4281: + br label %endif4289 +else4288: %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 + 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 %then4292, label %else4293 -then4292: + 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.2693, i64 3, i64 0 }) + %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.2694, i64 66, i64 0 }) + %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.2695, i64 7, i64 0 }, ptr %t497 + 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.2696, i64 3, i64 0 }, ptr %t498 + 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.2697, i64 4, i64 0 }, ptr %t499 + 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.2698, i64 3, i64 0 }, ptr %t500 + 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.2699, i64 5, i64 0 }, ptr %t501 + 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.2700, i64 4, i64 0 }, ptr %t502 + 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.2701, i64 4, i64 0 }, ptr %t503 + 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.cond4295 -for.cond4295: + br label %for.cond4302 +for.cond4302: %t510 = load i64, ptr %a509 %t511 = icmp slt i64 %t510, 7 - br i1 %t511, label %for.body4296, label %for.end4298 -for.body4296: + 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.from4299 -logic.from4299: - br i1 %t515, label %logic.end4301, label %logic.rhs4300 -logic.rhs4300: + 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.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: + 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 %endif4305 -endif4305: + 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 %range4306, label %inrange4307 -range4306: - call void @finch_panic_index(ptr @.str.2703, i64 1860, i64 %t522, i64 %t524) + br i1 %t525, label %range4313, label %inrange4314 +range4313: + call void @finch_panic_index(ptr @.str.2707, i64 1860, i64 %t522, i64 %t524) unreachable -inrange4307: +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 @@ -39799,7 +39854,7 @@ inrange4307: %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 } { 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 @@ -39810,21 +39865,21 @@ inrange4307: %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: + br label %for.step4304 +for.step4304: %t545 = load i64, ptr %a509 %t546 = add i64 %t545, 1 store i64 %t546, ptr %a509 - br label %for.cond4295 -for.end4298: + 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.2704, i64 52, i64 0 }, ptr %a550 + 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.2705, i64 10, i64 0 }, ptr %a555 + 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 @@ -39835,11 +39890,11 @@ for.end4298: 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 + 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.2707, i64 2, i64 0 }, ptr %a569 + 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 @@ -39847,45 +39902,45 @@ for.end4298: 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 + 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 %panic4308, label %ok4309 -panic4308: - call void @finch_panic(ptr @.str.2709, i64 1862, ptr @.str.2710) + br i1 %t581, label %panic4315, label %ok4316 +panic4315: + call void @finch_panic(ptr @.str.2713, i64 1862, ptr @.str.2714) unreachable -ok4309: +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 %range4310, label %inrange4311 -range4310: - call void @finch_panic_index(ptr @.str.2711, i64 1862, i64 %t583, i64 %t585) + br i1 %t586, label %range4317, label %inrange4318 +range4317: + call void @finch_panic_index(ptr @.str.2715, i64 1862, i64 %t583, i64 %t585) unreachable -inrange4311: +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 %endif4294 -else4293: + br label %endif4301 +else4300: %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 + 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 %then4312, label %else4313 -then4312: + br i1 %t593, label %then4319, label %else4320 +then4319: %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) + br i1 %t595, label %panic4322, label %ok4323 +panic4322: + call void @finch_panic(ptr @.str.2717, i64 1864, ptr @.str.2718) unreachable -ok4316: +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 @@ -39896,11 +39951,11 @@ ok4316: %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) + br i1 %t605, label %range4324, label %inrange4325 +range4324: + call void @finch_panic_index(ptr @.str.2719, i64 1864, i64 %t602, i64 %t604) unreachable -inrange4318: +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 @@ -39921,23 +39976,23 @@ inrange4318: %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: + br label %for.cond4326 +for.cond4326: %t626 = load i64, ptr %a625 %t627 = icmp slt i64 %t626, %t624 - br i1 %t627, label %for.body4320, label %for.end4322 -for.body4320: + 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 %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2716, i64 1869, i64 %t630, i64 %t632) + br i1 %t633, label %range4330, label %inrange4331 +range4330: + call void @finch_panic_index(ptr @.str.2720, i64 1869, i64 %t630, i64 %t632) unreachable -inrange4324: +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 @@ -39950,11 +40005,11 @@ inrange4324: %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) + br i1 %t645, label %range4332, label %inrange4333 +range4332: + call void @finch_panic_index(ptr @.str.2722, i64 1870, i64 %t642, i64 %t644) unreachable -inrange4326: +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 @@ -39966,11 +40021,11 @@ inrange4326: %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) + br i1 %t656, label %range4334, label %inrange4335 +range4334: + call void @finch_panic_index(ptr @.str.2723, i64 1870, i64 %t653, i64 %t655) unreachable -inrange4328: +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 @@ -39982,11 +40037,11 @@ inrange4328: %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) + br i1 %t667, label %range4336, label %inrange4337 +range4336: + call void @finch_panic_index(ptr @.str.2724, i64 1870, i64 %t664, i64 %t666) unreachable -inrange4330: +inrange4337: %t668 = extractvalue { ptr, i64, i64 } %t665, 0 %t669 = getelementptr inbounds i64, ptr %t668, i64 %t664 %t670 = load i64, ptr %t669 @@ -39994,7 +40049,7 @@ inrange4330: %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 } { 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 @@ -40005,21 +40060,21 @@ inrange4330: %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: + br label %for.step4328 +for.step4328: %t683 = load i64, ptr %a625 %t684 = add i64 %t683, 1 store i64 %t684, ptr %a625 - br label %for.cond4319 -for.end4322: + 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.2721, i64 52, i64 0 }, ptr %a688 + 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.2722, i64 10, i64 0 }, ptr %a693 + 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 @@ -40030,7 +40085,7 @@ for.end4322: 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 + 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 @@ -40043,11 +40098,11 @@ for.end4322: 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 + 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.2725, i64 2, i64 0 }, ptr %a720 + 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 @@ -40055,93 +40110,93 @@ for.end4322: 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 + 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 %panic4331, label %ok4332 -panic4331: - call void @finch_panic(ptr @.str.2727, i64 1872, ptr @.str.2728) + br i1 %t732, label %panic4338, label %ok4339 +panic4338: + call void @finch_panic(ptr @.str.2731, i64 1872, ptr @.str.2732) unreachable -ok4332: +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 %range4333, label %inrange4334 -range4333: - call void @finch_panic_index(ptr @.str.2729, i64 1872, i64 %t734, i64 %t736) + br i1 %t737, label %range4340, label %inrange4341 +range4340: + call void @finch_panic_index(ptr @.str.2733, i64 1872, i64 %t734, i64 %t736) unreachable -inrange4334: +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 %endif4314 -else4313: + br label %endif4321 +else4320: %t740 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2730, i64 20, i64 0 }, ptr %a742 + 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.2731, i64 39, i64 0 }, ptr %a747 + 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 %panic4335, label %ok4336 -panic4335: - call void @finch_panic(ptr @.str.2732, i64 1874, ptr @.str.2733) + br i1 %t750, label %panic4342, label %ok4343 +panic4342: + call void @finch_panic(ptr @.str.2736, i64 1874, ptr @.str.2737) unreachable -ok4336: +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 %range4337, label %inrange4338 -range4337: - call void @finch_panic_index(ptr @.str.2734, i64 1874, i64 %t752, i64 %t754) + br i1 %t755, label %range4344, label %inrange4345 +range4344: + call void @finch_panic_index(ptr @.str.2738, i64 1874, i64 %t752, i64 %t754) unreachable -inrange4338: +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 %endif4314 -endif4314: - br label %endif4294 -endif4294: - br label %endif4282 -endif4282: - br label %endif4267 -endif4267: - br label %endif4255 -endif4255: + 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 -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: +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 %panic4339, label %ok4340 -panic4339: - call void @finch_panic(ptr @.str.2735, i64 1878, ptr @.str.2736) + br i1 %t761, label %panic4346, label %ok4347 +panic4346: + call void @finch_panic(ptr @.str.2739, i64 1878, ptr @.str.2740) unreachable -ok4340: +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 @@ -40152,14 +40207,14 @@ ok4340: %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: + 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.have4342 -map.have4342: + 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 @@ -40219,30 +40274,30 @@ entry: 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 %panic4350, label %ok4351 +panic4350: + call void @finch_panic(ptr @.str.2742, i64 1883, ptr @.str.2743) unreachable -ok4344: +ok4351: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 35 %t5 = load i64, ptr %t4 call void @finch_str_from_int(ptr %a6, i64 %t5) %t7 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.2737, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2741, 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 + 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 %panic4345, label %ok4346 -panic4345: - call void @finch_panic(ptr @.str.2741, i64 1883, ptr @.str.2742) + br i1 %t17, label %panic4352, label %ok4353 +panic4352: + call void @finch_panic(ptr @.str.2745, i64 1883, ptr @.str.2746) unreachable -ok4346: +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) @@ -40252,16 +40307,16 @@ ok4346: 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 + 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 %panic4347, label %ok4348 -panic4347: - call void @finch_panic(ptr @.str.2744, i64 1883, ptr @.str.2745) + br i1 %t31, label %panic4354, label %ok4355 +panic4354: + call void @finch_panic(ptr @.str.2748, i64 1883, ptr @.str.2749) unreachable -ok4348: +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) @@ -40273,72 +40328,72 @@ ok4348: 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) + br i1 %t42, label %panic4356, label %ok4357 +panic4356: + call void @finch_panic(ptr @.str.2750, i64 1884, ptr @.str.2751) unreachable -ok4350: +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 %then4351, label %endif4353 -then4351: + br i1 %t47, label %then4358, label %endif4360 +then4358: %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 %panic4361, label %ok4362 +panic4361: + call void @finch_panic(ptr @.str.2752, i64 1885, ptr @.str.2753) unreachable -ok4355: +ok4362: %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 32 %t51 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t51, ptr %a52 %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t54 = icmp slt i64 %t53, 0 - br i1 %t54, label %map.missing4356, label %map.found4357 -map.missing4356: + 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.2750, i64 1885, ptr %a55) + call void @finch_map_missing(ptr @.str.2754, i64 1885, ptr %a55) unreachable -map.found4357: +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 -endif4353: +endif4360: %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) + br i1 %t64, label %panic4365, label %ok4366 +panic4365: + call void @finch_panic(ptr @.str.2756, i64 1887, ptr @.str.2757) unreachable -ok4359: +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.2751, i64 18, i64 0 }, ptr %a70 + 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.2754, i64 10, i64 0 }, ptr %a75 + 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 %panic4360, label %ok4361 -panic4360: - call void @finch_panic(ptr @.str.2755, i64 1887, ptr @.str.2756) + br i1 %t78, label %panic4367, label %ok4368 +panic4367: + call void @finch_panic(ptr @.str.2759, i64 1887, ptr @.str.2760) unreachable -ok4361: +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) @@ -40348,16 +40403,16 @@ ok4361: 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 + 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 %panic4362, label %ok4363 -panic4362: - call void @finch_panic(ptr @.str.2758, i64 1887, ptr @.str.2759) + br i1 %t92, label %panic4369, label %ok4370 +panic4369: + call void @finch_panic(ptr @.str.2762, i64 1887, ptr @.str.2763) unreachable -ok4363: +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) @@ -40367,7 +40422,7 @@ ok4363: 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 + 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) @@ -40375,11 +40430,11 @@ ok4363: %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) + br i1 %t109, label %panic4371, label %ok4372 +panic4371: + call void @finch_panic(ptr @.str.2765, i64 1888, ptr @.str.2766) unreachable -ok4365: +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 @@ -40390,14 +40445,14 @@ ok4365: %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: + 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.have4367 -map.have4367: + 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 @@ -40477,11 +40532,11 @@ entry: 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 %panic4375, label %ok4376 +panic4375: + call void @finch_panic(ptr @.str.2767, i64 1893, ptr @.str.2768) unreachable -ok4369: +ok4376: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12 %t6 = load %S.gen.FnSig, ptr %t5 store %S.gen.FnSig %t6, ptr %a7 @@ -40506,28 +40561,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 %then4377, label %endif4379 +then4377: %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.2769, i64 4, i64 0 }, ptr %t30 store i64 %t28, ptr %t26 - br label %endif4372 -endif4372: + br label %endif4379 +endif4379: %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.cond4380 +each.cond4380: %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.body4381, label %each.end4383 +each.body4381: %t37 = load ptr, ptr %t31 %t38 = getelementptr inbounds %S.ast.Type, ptr %t37, i64 %t35 %t39 = load %S.ast.Type, ptr %t38 @@ -40544,46 +40599,46 @@ 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.step4382 +each.step4382: %t50 = load i64, ptr %a32 %t51 = add i64 %t50, 1 store i64 %t51, ptr %a32 - br label %each.cond4373 -each.end4376: + br label %each.cond4380 +each.end4383: %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 %panic4384, label %ok4385 +panic4384: + call void @finch_panic(ptr @.str.2770, i64 1902, ptr @.str.2771) unreachable -ok4378: +ok4385: %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 33 %t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t56 = load i64, ptr %t55 %t57 = load { ptr, i64, i64 }, ptr %t54 %t58 = extractvalue { ptr, i64, i64 } %t57, 1 %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2768, i64 1902, i64 %t56, i64 %t58) + br i1 %t59, label %range4386, label %inrange4387 +range4386: + call void @finch_panic_index(ptr @.str.2772, i64 1902, i64 %t56, i64 %t58) unreachable -inrange4380: +inrange4387: %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.2774, 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.2773, 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 + 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) @@ -40591,12 +40646,12 @@ inrange4380: %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 } { 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.2773, i64 17, i64 0 }, ptr %a88 + 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 @@ -40605,14 +40660,14 @@ inrange4380: %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) + 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.2775, i64 11, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.2779, i64 11, i64 0 }, ptr %a104 call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) %t105 = load { ptr, i64, i64 }, ptr %a102 %t106 = load i64, ptr %a63 @@ -40623,7 +40678,7 @@ inrange4380: 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 + 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 @@ -40634,7 +40689,7 @@ inrange4380: 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 + 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 @@ -40646,7 +40701,7 @@ inrange4380: 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.2778, i64 9, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.2782, i64 9, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = load i64, ptr %a78 @@ -40657,7 +40712,7 @@ inrange4380: 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 + 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 @@ -40669,7 +40724,7 @@ inrange4380: 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 } { ptr @.str.2784, i64 87, i64 0 }, ptr %a161 call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) %t162 = load { ptr, i64, i64 }, ptr %a159 %t163 = call i64 @finch.gen.md(ptr %t79, { ptr, i64, i64 } %t162) @@ -40747,95 +40802,95 @@ 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 %panic4388, label %ok4389 +panic4388: + call void @finch_panic(ptr @.str.2785, i64 1908, ptr @.str.2786) unreachable -ok4382: +ok4389: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 28 %t9 = load i1, ptr %t8 %t10 = xor i1 %t9, true - br label %logic.from4383 -logic.from4383: - br i1 %t10, label %logic.end4385, label %logic.rhs4384 -logic.rhs4384: + br label %logic.from4390 +logic.from4390: + br i1 %t10, label %logic.end4392, label %logic.rhs4391 +logic.rhs4391: %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 %panic4393, label %ok4394 +panic4393: + call void @finch_panic(ptr @.str.2787, i64 1908, ptr @.str.2788) unreachable -ok4387: +ok4394: %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 34 %t14 = load i64, ptr %t13 %t15 = icmp slt i64 %t14, 0 - br label %logic.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.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: ret void -endif4391: +endif4398: %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 %then4399, label %endif4401 +then4399: ret void -endif4394: - store { ptr, i64, i64 } { ptr @.str.2785, i64 0, i64 0 }, ptr %a23 +endif4401: + store { ptr, i64, i64 } { ptr @.str.2789, 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 %panic4402, label %ok4403 +panic4402: + call void @finch_panic(ptr @.str.2790, i64 1916, ptr @.str.2791) unreachable -ok4396: +ok4403: %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 37 %t27 = load i64, ptr %t26 %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4397, label %endif4399 -then4397: + br i1 %t28, label %then4404, label %endif4406 +then4404: %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 %panic4407, label %ok4408 +panic4407: + call void @finch_panic(ptr @.str.2793, i64 1917, ptr @.str.2794) unreachable -ok4401: +ok4408: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 37 %t32 = load i64, ptr %t31 call void @finch_str_from_int(ptr %a33, i64 %t32) %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.2788, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2792, 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: + br label %endif4406 +endif4406: %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 } { 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.2792, i64 11, i64 0 }, ptr %a47 + 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 %panic4402, label %ok4403 -panic4402: - call void @finch_panic(ptr @.str.2793, i64 1919, ptr @.str.2794) + br i1 %t50, label %panic4409, label %ok4410 +panic4409: + call void @finch_panic(ptr @.str.2797, i64 1919, ptr @.str.2798) unreachable -ok4403: +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) @@ -40845,27 +40900,27 @@ ok4403: 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 + store { ptr, i64, i64 } { ptr @.str.2799, i64 9, i64 0 }, ptr %a61 call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) %t62 = load { ptr, i64, i64 }, ptr %a59 %t63 = load ptr, ptr %a1 %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4404, label %ok4405 -panic4404: - call void @finch_panic(ptr @.str.2796, i64 1919, ptr @.str.2797) + br i1 %t64, label %panic4411, label %ok4412 +panic4411: + call void @finch_panic(ptr @.str.2800, i64 1919, ptr @.str.2801) unreachable -ok4405: +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 %range4406, label %inrange4407 -range4406: - call void @finch_panic_index(ptr @.str.2798, i64 1919, i64 %t67, i64 %t69) + br i1 %t70, label %range4413, label %inrange4414 +range4413: + call void @finch_panic_index(ptr @.str.2802, i64 1919, i64 %t67, i64 %t69) unreachable -inrange4407: +inrange4414: %t71 = extractvalue { ptr, i64, i64 } %t68, 0 %t72 = getelementptr inbounds i64, ptr %t71, i64 %t67 %t73 = load i64, ptr %t72 @@ -40876,7 +40931,7 @@ inrange4407: 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 + 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 @@ -40888,7 +40943,7 @@ inrange4407: 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 + 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 @@ -40904,7 +40959,7 @@ inrange4407: 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 + 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) @@ -40913,32 +40968,32 @@ inrange4407: %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) + br i1 %t117, label %panic4415, label %ok4416 +panic4415: + call void @finch_panic(ptr @.str.2806, i64 1920, ptr @.str.2807) unreachable -ok4409: +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 %panic4410, label %ok4411 -panic4410: - call void @finch_panic(ptr @.str.2804, i64 1921, ptr @.str.2805) + br i1 %t122, label %panic4417, label %ok4418 +panic4417: + call void @finch_panic(ptr @.str.2808, i64 1921, ptr @.str.2809) unreachable -ok4411: +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.2806, i64 41, i64 0 }, ptr %a127 + 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.2807, i64 12, i64 0 }, ptr %a132 + 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 @@ -40949,7 +41004,7 @@ ok4411: 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 + 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) @@ -40980,59 +41035,59 @@ entry: %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2809, i64 20, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.2813, 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.2814, 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 %panic4419, label %ok4420 +panic4419: + call void @finch_panic(ptr @.str.2815, i64 1928, ptr @.str.2816) unreachable -ok4413: +ok4420: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 31 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 %t14 = load i64, ptr %t13 store i64 0, ptr %a15 - br label %for.cond4414 -for.cond4414: + br label %for.cond4421 +for.cond4421: %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.body4422, label %for.end4424 +for.body4422: %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.2817, 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 + 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 %panic4418, label %ok4419 -panic4418: - call void @finch_panic(ptr @.str.2815, i64 1929, ptr @.str.2816) + br i1 %t31, label %panic4425, label %ok4426 +panic4425: + call void @finch_panic(ptr @.str.2819, i64 1929, ptr @.str.2820) unreachable -ok4419: +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 %range4420, label %inrange4421 -range4420: - call void @finch_panic_index(ptr @.str.2817, i64 1929, i64 %t33, i64 %t35) + br i1 %t36, label %range4427, label %inrange4428 +range4427: + call void @finch_panic_index(ptr @.str.2821, i64 1929, i64 %t33, i64 %t35) unreachable -inrange4421: +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 @@ -41047,19 +41102,19 @@ inrange4421: %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: + br label %for.step4423 +for.step4423: %t48 = load i64, ptr %a15 %t49 = add i64 %t48, 1 store i64 %t49, ptr %a15 - br label %for.cond4414 -for.end4417: + br label %for.cond4421 +for.end4424: %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 + 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.2819, i64 1, i64 0 }, ptr %a56 + 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 @@ -41074,20 +41129,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.cond4490 -n.cond4490: + br label %n.cond4497 +n.cond4497: %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.body4498, label %n.end4499 +n.body4498: %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.cond4497 +n.end4499: ret void } @@ -41216,31 +41271,31 @@ entry: 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 %panic4429, label %ok4430 +panic4429: + call void @finch_panic(ptr @.str.2824, i64 1935, ptr @.str.2825) unreachable -ok4423: +ok4430: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14 %t6 = load i64, ptr %a2 %t7 = load { ptr, i64, i64 }, ptr %t5 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2822, i64 1935, i64 %t6, i64 %t8) + br i1 %t9, label %range4431, label %inrange4432 +range4431: + call void @finch_panic_index(ptr @.str.2826, i64 1935, i64 %t6, i64 %t8) unreachable -inrange4425: +inrange4432: %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 %panic4433, label %ok4434 +panic4433: + call void @finch_panic(ptr @.str.2827, i64 1935, ptr @.str.2828) unreachable -ok4427: +ok4434: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12 store %S.gen.FnSig %t12, ptr %a16 call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) @@ -41248,21 +41303,21 @@ ok4427: 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) + br i1 %t20, label %panic4435, label %ok4436 +panic4435: + call void @finch_panic(ptr @.str.2829, i64 1936, ptr @.str.2830) unreachable -ok4429: +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 %panic4430, label %ok4431 -panic4430: - call void @finch_panic(ptr @.str.2827, i64 1936, ptr @.str.2828) + br i1 %t25, label %panic4437, label %ok4438 +panic4437: + call void @finch_panic(ptr @.str.2831, i64 1936, ptr @.str.2832) unreachable -ok4431: +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) @@ -41270,21 +41325,21 @@ ok4431: 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) + br i1 %t31, label %panic4439, label %ok4440 +panic4439: + call void @finch_panic(ptr @.str.2833, i64 1937, ptr @.str.2834) unreachable -ok4433: +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 %panic4434, label %ok4435 -panic4434: - call void @finch_panic(ptr @.str.2831, i64 1937, ptr @.str.2832) + br i1 %t36, label %panic4441, label %ok4442 +panic4441: + call void @finch_panic(ptr @.str.2835, i64 1937, ptr @.str.2836) unreachable -ok4435: +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) @@ -41292,21 +41347,21 @@ ok4435: 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) + br i1 %t42, label %panic4443, label %ok4444 +panic4443: + call void @finch_panic(ptr @.str.2837, i64 1938, ptr @.str.2838) unreachable -ok4437: +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 %panic4438, label %ok4439 -panic4438: - call void @finch_panic(ptr @.str.2835, i64 1938, ptr @.str.2836) + br i1 %t47, label %panic4445, label %ok4446 +panic4445: + call void @finch_panic(ptr @.str.2839, i64 1938, ptr @.str.2840) unreachable -ok4439: +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) @@ -41314,103 +41369,103 @@ ok4439: store { ptr, i64, i64 } %t51, ptr %t48 %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 %panic4447, label %ok4448 +panic4447: + call void @finch_panic(ptr @.str.2842, i64 1939, ptr @.str.2843) unreachable -ok4441: +ok4448: %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 + 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 %panic4442, label %ok4443 -panic4442: - call void @finch_panic(ptr @.str.2840, i64 1940, ptr @.str.2841) + br i1 %t56, label %panic4449, label %ok4450 +panic4449: + call void @finch_panic(ptr @.str.2844, i64 1940, ptr @.str.2845) unreachable -ok4443: +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 %then4444, label %endif4446 -then4444: + br i1 %t61, label %then4451, label %endif4453 +then4451: %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) + br i1 %t63, label %panic4454, label %ok4455 +panic4454: + call void @finch_panic(ptr @.str.2847, i64 1941, ptr @.str.2848) unreachable -ok4448: +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.2842, i64 17, i64 0 }, ptr %a68 + 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.2845, i64 1, i64 0 }, ptr %a73 + 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 %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2846, i64 1941, ptr @.str.2847) + br i1 %t76, label %panic4456, label %ok4457 +panic4456: + call void @finch_panic(ptr @.str.2850, i64 1941, ptr @.str.2851) unreachable -ok4450: +ok4457: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 19 store { ptr, i64, i64 } %t74, ptr %t77 - br label %endif4446 -endif4446: + br label %endif4453 +endif4453: %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) + br i1 %t79, label %panic4458, label %ok4459 +panic4458: + call void @finch_panic(ptr @.str.2852, i64 1943, ptr @.str.2853) unreachable -ok4452: +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 %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2850, i64 1943, ptr @.str.2851) + br i1 %t82, label %panic4460, label %ok4461 +panic4460: + call void @finch_panic(ptr @.str.2854, i64 1943, ptr @.str.2855) unreachable -ok4454: +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 %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2852, i64 1943, i64 %t85, i64 %t87) + br i1 %t88, label %range4462, label %inrange4463 +range4462: + call void @finch_panic_index(ptr @.str.2856, i64 1943, i64 %t85, i64 %t87) unreachable -inrange4456: +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 %panic4457, label %ok4458 -panic4457: - call void @finch_panic(ptr @.str.2853, i64 1943, ptr @.str.2854) + br i1 %t93, label %panic4464, label %ok4465 +panic4464: + call void @finch_panic(ptr @.str.2857, i64 1943, ptr @.str.2858) unreachable -ok4458: +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 %range4459, label %inrange4460 -range4459: - call void @finch_panic_index(ptr @.str.2855, i64 1943, i64 %t96, i64 %t98) + br i1 %t99, label %range4466, label %inrange4467 +range4466: + call void @finch_panic_index(ptr @.str.2859, i64 1943, i64 %t96, i64 %t98) unreachable -inrange4460: +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 @@ -41422,11 +41477,11 @@ inrange4460: %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) + br i1 %t110, label %panic4468, label %ok4469 +panic4468: + call void @finch_panic(ptr @.str.2860, i64 1945, ptr @.str.2861) unreachable -ok4462: +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) @@ -41435,11 +41490,11 @@ ok4462: %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) + br i1 %t117, label %panic4470, label %ok4471 +panic4470: + call void @finch_panic(ptr @.str.2862, i64 1946, ptr @.str.2863) unreachable -ok4464: +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) @@ -41447,52 +41502,52 @@ ok4464: 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 %panic4472, label %ok4473 +panic4472: + call void @finch_panic(ptr @.str.2864, i64 1947, ptr @.str.2865) unreachable -ok4466: +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 %panic4467, label %ok4468 -panic4467: - call void @finch_panic(ptr @.str.2862, i64 1948, ptr @.str.2863) + br i1 %t126, label %panic4474, label %ok4475 +panic4474: + call void @finch_panic(ptr @.str.2866, i64 1948, ptr @.str.2867) unreachable -ok4468: +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 %panic4469, label %ok4470 -panic4469: - call void @finch_panic(ptr @.str.2864, i64 1949, ptr @.str.2865) + br i1 %t129, label %panic4476, label %ok4477 +panic4476: + call void @finch_panic(ptr @.str.2868, i64 1949, ptr @.str.2869) unreachable -ok4470: +ok4477: %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 23 store i64 0, ptr %t130 %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4471, label %ok4472 -panic4471: - call void @finch_panic(ptr @.str.2866, i64 1950, ptr @.str.2867) + br i1 %t132, label %panic4478, label %ok4479 +panic4478: + call void @finch_panic(ptr @.str.2870, i64 1950, ptr @.str.2871) unreachable -ok4472: +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 %panic4473, label %ok4474 -panic4473: - call void @finch_panic(ptr @.str.2868, i64 1952, ptr @.str.2869) + br i1 %t136, label %panic4480, label %ok4481 +panic4480: + call void @finch_panic(ptr @.str.2872, i64 1952, ptr @.str.2873) unreachable -ok4474: +ok4481: %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: + br i1 %t138, label %then4482, label %endif4484 +then4482: %t139 = load ptr, ptr %a1 %t140 = load %S.ast.Node, ptr %a106 %t141 = call i64 @finch.gen.dbgSubprogram(ptr %t139, %S.ast.Node %t140) @@ -41500,64 +41555,64 @@ then4475: %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) + br i1 %t144, label %panic4485, label %ok4486 +panic4485: + call void @finch_panic(ptr @.str.2874, i64 1954, ptr @.str.2875) unreachable -ok4479: +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 %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 %panic4487, label %ok4488 +panic4487: + call void @finch_panic(ptr @.str.2876, i64 1955, ptr @.str.2877) unreachable -ok4481: +ok4488: %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) + br i1 %t154, label %panic4489, label %ok4490 +panic4489: + call void @finch_panic(ptr @.str.2878, i64 1956, ptr @.str.2879) unreachable -ok4483: +ok4490: %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 36 store i64 %t152, ptr %t155 - br label %endif4477 -endif4477: + br label %endif4484 +endif4484: %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) + br i1 %t157, label %panic4491, label %ok4492 +panic4491: + call void @finch_panic(ptr @.str.2880, i64 1958, ptr @.str.2881) unreachable -ok4485: +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 %panic4486, label %ok4487 -panic4486: - call void @finch_panic(ptr @.str.2878, i64 1959, ptr @.str.2879) + br i1 %t160, label %panic4493, label %ok4494 +panic4493: + call void @finch_panic(ptr @.str.2882, i64 1959, ptr @.str.2883) unreachable -ok4487: +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 %panic4488, label %ok4489 -panic4488: - call void @finch_panic(ptr @.str.2880, i64 1961, ptr @.str.2881) + br i1 %t165, label %panic4495, label %ok4496 +panic4495: + call void @finch_panic(ptr @.str.2884, i64 1961, ptr @.str.2885) unreachable -ok4489: +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) @@ -41568,42 +41623,42 @@ ok4489: 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) + br i1 %t173, label %panic4500, label %ok4501 +panic4500: + call void @finch_panic(ptr @.str.2886, i64 1964, ptr @.str.2887) unreachable -ok4494: +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 %then4495, label %endif4497 -then4495: + 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.2884, i64 9, i64 0 }, ptr %t183 + store { ptr, i64, i64 } { ptr @.str.2888, i64 9, i64 0 }, ptr %t183 store i64 %t181, ptr %t179 - store { ptr, i64, i64 } { ptr @.str.2885, i64 6, i64 0 }, ptr %a184 + 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 %panic4498, label %ok4499 -panic4498: - call void @finch_panic(ptr @.str.2886, i64 1968, ptr @.str.2887) + br i1 %t186, label %panic4505, label %ok4506 +panic4505: + call void @finch_panic(ptr @.str.2890, i64 1968, ptr @.str.2891) unreachable -ok4499: +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 %then4500, label %endif4502 -then4500: - store { ptr, i64, i64 } { ptr @.str.2888, i64 4, i64 0 }, ptr %a184 - br label %endif4502 -endif4502: + 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) @@ -41611,11 +41666,11 @@ endif4502: %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) + br i1 %t196, label %panic4510, label %ok4511 +panic4510: + call void @finch_panic(ptr @.str.2893, i64 1971, ptr @.str.2894) unreachable -ok4504: +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 @@ -41625,11 +41680,11 @@ ok4504: %t203 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t202, 2 %t204 = load ptr, ptr %a1 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4505, label %ok4506 -panic4505: - call void @finch_panic(ptr @.str.2891, i64 1971, ptr @.str.2892) + br i1 %t205, label %panic4512, label %ok4513 +panic4512: + call void @finch_panic(ptr @.str.2895, i64 1971, ptr @.str.2896) unreachable -ok4506: +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 @@ -41640,31 +41695,31 @@ ok4506: 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) + br i1 %t215, label %panic4514, label %ok4515 +panic4514: + call void @finch_panic(ptr @.str.2897, i64 1972, ptr @.str.2898) unreachable -ok4508: +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 %range4509, label %inrange4510 -range4509: - call void @finch_panic_index(ptr @.str.2895, i64 1972, i64 0, i64 %t218) + br i1 %t219, label %range4516, label %inrange4517 +range4516: + call void @finch_panic_index(ptr @.str.2899, i64 1972, i64 0, i64 %t218) unreachable -inrange4510: +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.2896, i64 4, i64 0 }, 0 + %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.2897, i64 5, i64 0 }, 2 + %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 @@ -41675,59 +41730,59 @@ inrange4510: 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) + br i1 %t237, label %panic4518, label %ok4519 +panic4518: + call void @finch_panic(ptr @.str.2902, i64 1973, ptr @.str.2903) unreachable -ok4512: +ok4519: %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: + 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.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: + 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 %panic4516, label %ok4517 -panic4516: - call void @finch_panic(ptr @.str.2902, i64 1978, ptr @.str.2903) + br i1 %t244, label %panic4523, label %ok4524 +panic4523: + call void @finch_panic(ptr @.str.2906, i64 1978, ptr @.str.2907) unreachable -ok4517: +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.cond4518 -for.cond4518: + br label %for.cond4525 +for.cond4525: %t250 = load i64, ptr %a249 %t251 = icmp slt i64 %t250, %t248 - br i1 %t251, label %for.body4519, label %for.end4521 -for.body4519: + 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 %panic4522, label %ok4523 -panic4522: - call void @finch_panic(ptr @.str.2904, i64 1979, ptr @.str.2905) + br i1 %t253, label %panic4529, label %ok4530 +panic4529: + call void @finch_panic(ptr @.str.2908, i64 1979, ptr @.str.2909) unreachable -ok4523: +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 %range4524, label %inrange4525 -range4524: - call void @finch_panic_index(ptr @.str.2906, i64 1979, i64 %t256, i64 %t258) + br i1 %t259, label %range4531, label %inrange4532 +range4531: + call void @finch_panic_index(ptr @.str.2910, i64 1979, i64 %t256, i64 %t258) unreachable -inrange4525: +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 @@ -41740,7 +41795,7 @@ inrange4525: %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 + 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 @@ -41760,7 +41815,7 @@ inrange4525: %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 } { 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 @@ -41768,116 +41823,116 @@ inrange4525: %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: + 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 %panic4529, label %ok4530 -panic4529: - call void @finch_panic(ptr @.str.2909, i64 1982, ptr @.str.2910) + br i1 %t298, label %panic4536, label %ok4537 +panic4536: + call void @finch_panic(ptr @.str.2913, i64 1982, ptr @.str.2914) unreachable -ok4530: +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 %range4531, label %inrange4532 -range4531: - call void @finch_panic_index(ptr @.str.2911, i64 1982, i64 %t301, i64 %t303) + br i1 %t304, label %range4538, label %inrange4539 +range4538: + call void @finch_panic_index(ptr @.str.2915, i64 1982, i64 %t301, i64 %t303) unreachable -inrange4532: +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.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: + 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 %endif4536 -endif4536: + 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 %panic4537, label %ok4538 -panic4537: - call void @finch_panic(ptr @.str.2912, i64 1985, ptr @.str.2913) + br i1 %t317, label %panic4544, label %ok4545 +panic4544: + call void @finch_panic(ptr @.str.2916, i64 1985, ptr @.str.2917) unreachable -ok4538: +ok4545: %t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 37 store i64 %t315, ptr %t318 %t319 = load ptr, ptr %a1 %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic4539, label %ok4540 -panic4539: - call void @finch_panic(ptr @.str.2914, i64 1986, ptr @.str.2915) + br i1 %t320, label %panic4546, label %ok4547 +panic4546: + call void @finch_panic(ptr @.str.2918, i64 1986, ptr @.str.2919) unreachable -ok4540: +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 %then4541, label %endif4543 -then4541: + 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 %panic4544, label %ok4545 -panic4544: - call void @finch_panic(ptr @.str.2916, i64 1987, ptr @.str.2917) + br i1 %t329, label %panic4551, label %ok4552 +panic4551: + call void @finch_panic(ptr @.str.2920, i64 1987, ptr @.str.2921) unreachable -ok4545: +ok4552: %t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 37 store i64 %t327, ptr %t330 - br label %endif4543 -endif4543: + 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 %range4546, label %inrange4547 -range4546: - call void @finch_panic_index(ptr @.str.2918, i64 1989, i64 %t333, i64 %t335) + br i1 %t336, label %range4553, label %inrange4554 +range4553: + call void @finch_panic_index(ptr @.str.2922, i64 1989, i64 %t333, i64 %t335) unreachable -inrange4547: +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 %panic4548, label %ok4549 -panic4548: - call void @finch_panic(ptr @.str.2919, i64 1989, ptr @.str.2920) + br i1 %t341, label %panic4555, label %ok4556 +panic4555: + call void @finch_panic(ptr @.str.2923, i64 1989, ptr @.str.2924) unreachable -ok4549: +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 %range4550, label %inrange4551 -range4550: - call void @finch_panic_index(ptr @.str.2921, i64 1989, i64 %t344, i64 %t346) + br i1 %t347, label %range4557, label %inrange4558 +range4557: + call void @finch_panic_index(ptr @.str.2925, i64 1989, i64 %t344, i64 %t346) unreachable -inrange4551: +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 @@ -41886,20 +41941,20 @@ inrange4551: %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) + br i1 %t355, label %panic4559, label %ok4560 +panic4559: + call void @finch_panic(ptr @.str.2926, i64 1990, ptr @.str.2927) unreachable -ok4553: +ok4560: %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 37 store i64 0, ptr %t356 - br label %for.step4520 -for.step4520: + br label %for.step4527 +for.step4527: %t357 = load i64, ptr %a249 %t358 = add i64 %t357, 1 store i64 %t358, ptr %a249 - br label %for.cond4518 -for.end4521: + 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 @@ -41909,63 +41964,63 @@ for.end4521: %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) + br i1 %t367, label %range4561, label %inrange4562 +range4561: + call void @finch_panic_index(ptr @.str.2928, i64 1992, i64 %t364, i64 %t366) unreachable -inrange4555: +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 %panic4556, label %ok4557 -panic4556: - call void @finch_panic(ptr @.str.2925, i64 1993, ptr @.str.2926) + br i1 %t372, label %panic4563, label %ok4564 +panic4563: + call void @finch_panic(ptr @.str.2929, i64 1993, ptr @.str.2930) unreachable -ok4557: +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 %then4558, label %endif4560 -then4558: + br i1 %t375, label %then4565, label %endif4567 +then4565: %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) + br i1 %t377, label %panic4568, label %ok4569 +panic4568: + call void @finch_panic(ptr @.str.2931, i64 1994, ptr @.str.2932) unreachable -ok4562: +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.2929, i64 4, i64 0 }, ptr %a383 + 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 %then4563, label %endif4565 -then4563: + 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.2930, i64 10, i64 0 }, ptr %a391 + 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.2931, i64 38, i64 0 }, ptr %a396 + 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 %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 %panic4573, label %ok4574 +panic4573: + call void @finch_panic(ptr @.str.2936, i64 1995, ptr @.str.2937) unreachable -ok4567: +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 @@ -41975,110 +42030,110 @@ ok4567: 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: + 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 %panic4568, label %ok4569 -panic4568: - call void @finch_panic(ptr @.str.2934, i64 1998, ptr @.str.2935) + br i1 %t410, label %panic4575, label %ok4576 +panic4575: + call void @finch_panic(ptr @.str.2938, i64 1998, ptr @.str.2939) unreachable -ok4569: +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 %then4570, label %else4571 -then4570: + br i1 %t413, label %then4577, label %else4578 +then4577: %t414 = load ptr, ptr %a1 %t415 = load ptr, ptr %a1 %t416 = load ptr, ptr %a1 %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic4573, label %ok4574 -panic4573: - call void @finch_panic(ptr @.str.2937, i64 1999, ptr @.str.2938) + br i1 %t417, label %panic4580, label %ok4581 +panic4580: + call void @finch_panic(ptr @.str.2941, i64 1999, ptr @.str.2942) unreachable -ok4574: +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.2936, i64 4, i64 0 }, ptr %a422 + 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.2939, i64 53, i64 0 }, ptr %a427 + 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 %endif4572 -else4571: + br label %endif4579 +else4578: %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 + 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 %then4575, label %endif4577 -then4575: + 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.2942, i64 7, i64 0 }, ptr %a437 + 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 %endif4577 -endif4577: + br label %endif4584 +endif4584: %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) + br i1 %t441, label %panic4585, label %ok4586 +panic4585: + call void @finch_panic(ptr @.str.2947, i64 2008, ptr @.str.2948) unreachable -ok4579: +ok4586: %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 34 store i64 -1, ptr %t442 %t443 = load ptr, ptr %a1 %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2945, i64 2009, ptr @.str.2946) + br i1 %t444, label %panic4587, label %ok4588 +panic4587: + call void @finch_panic(ptr @.str.2949, i64 2009, ptr @.str.2950) unreachable -ok4581: +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 %panic4582, label %ok4583 -panic4582: - call void @finch_panic(ptr @.str.2948, i64 2009, ptr @.str.2949) + br i1 %t449, label %panic4589, label %ok4590 +panic4589: + call void @finch_panic(ptr @.str.2952, i64 2009, ptr @.str.2953) unreachable -ok4583: +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.2947, i64 16, i64 0 }, ptr %a454 + 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.2950, i64 1, i64 0 }, ptr %a459 + 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 %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2951, i64 2009, ptr @.str.2952) + br i1 %t462, label %panic4591, label %ok4592 +panic4591: + call void @finch_panic(ptr @.str.2955, i64 2009, ptr @.str.2956) unreachable -ok4585: +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 @@ -42087,11 +42142,11 @@ ok4585: 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 + 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.2954, i64 2, i64 0 }, ptr %a475 + 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 @@ -42099,7 +42154,7 @@ ok4585: 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 + 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 @@ -42108,19 +42163,19 @@ ok4585: 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 + 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 %panic4586, label %ok4587 -panic4586: - call void @finch_panic(ptr @.str.2957, i64 2010, ptr @.str.2958) + br i1 %t496, label %panic4593, label %ok4594 +panic4593: + call void @finch_panic(ptr @.str.2961, i64 2010, ptr @.str.2962) unreachable -ok4587: +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.2959, i64 1, i64 0 }, ptr %a499 + 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 @@ -42128,19 +42183,19 @@ ok4587: 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 + 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 %panic4588, label %ok4589 -panic4588: - call void @finch_panic(ptr @.str.2961, i64 2010, ptr @.str.2962) + br i1 %t511, label %panic4595, label %ok4596 +panic4595: + call void @finch_panic(ptr @.str.2965, i64 2010, ptr @.str.2966) unreachable -ok4589: +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.2963, i64 1, i64 0 }, ptr %a514 + 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 @@ -42148,7 +42203,7 @@ ok4589: 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 + 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 @@ -42172,59 +42227,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 %then4597, label %endif4599 +then4597: %t5 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t5) - br label %endif4592 -endif4592: + br label %endif4599 +endif4599: %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.cond4600 +each.cond4600: %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.body4601, label %each.end4603 +each.body4601: %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 %panic4604, label %ok4605 +panic4604: + call void @finch_panic(ptr @.str.2969, i64 2020, ptr @.str.2970) unreachable -ok4598: +ok4605: %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 %then4606, label %endif4608 +then4606: %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.2971, i64 66, i64 0 }) + br label %endif4608 +endif4608: %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.step4602 +each.step4602: %t24 = load i64, ptr %a7 %t25 = add i64 %t24, 1 store i64 %t25, ptr %a7 - br label %each.cond4593 -each.end4596: + br label %each.cond4600 +each.end4603: %t26 = load i1, ptr %a3 - br i1 %t26, label %then4602, label %endif4604 -then4602: + br i1 %t26, label %then4609, label %endif4611 +then4609: %t27 = load ptr, ptr %a1 call void @finch.gen.endScope(ptr %t27) - br label %endif4604 -endif4604: + br label %endif4611 +endif4611: ret void } @@ -42300,22 +42355,22 @@ entry: %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 %panic4612, label %ok4613 +panic4612: + call void @finch_panic(ptr @.str.2972, i64 2031, ptr @.str.2973) unreachable -ok4606: +ok4613: %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 35 store i64 %t4, ptr %t7 %t8 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 %t9 = load i64, ptr %t8 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic4607, label %ok4608 -panic4607: - call void @finch_panic(ptr @.str.2970, i64 2032, ptr @.str.2971) + br i1 %t11, label %panic4614, label %ok4615 +panic4614: + call void @finch_panic(ptr @.str.2974, i64 2032, ptr @.str.2975) unreachable -ok4608: +ok4615: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 36 store i64 %t9, ptr %t12 %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 @@ -42326,203 +42381,203 @@ 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.2976, 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 %then4616, label %else4617 +then4616: %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 %endif4618 +else4617: %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.2977, 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 %then4619, label %else4620 +then4619: %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 %endif4621 +else4620: %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.2978, 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 %then4622, label %else4623 +then4622: %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 %endif4624 +else4623: %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.2979, 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 %then4625, label %else4626 +then4625: %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 %range4628, label %inrange4629 +range4628: + call void @finch_panic_index(ptr @.str.2980, i64 2041, i64 0, i64 %t47) unreachable -inrange4622: +inrange4629: %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.2981, 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 %then4630, label %else4631 +then4630: %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) + br i1 %t61, label %range4633, label %inrange4634 +range4633: + call void @finch_panic_index(ptr @.str.2982, i64 2042, i64 0, i64 %t60) unreachable -inrange4627: +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 %endif4625 -else4624: + 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 %range4628, label %inrange4629 -range4628: - call void @finch_panic_index(ptr @.str.2979, i64 2044, i64 0, i64 %t69) + br i1 %t70, label %range4635, label %inrange4636 +range4635: + call void @finch_panic_index(ptr @.str.2983, i64 2044, i64 0, i64 %t69) unreachable -inrange4629: +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 %endif4625 -endif4625: - br label %endif4620 -else4619: + 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.2980, i64 5, i64 0 }, ptr %a77 + 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 %then4630, label %else4631 -then4630: + 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 %endif4632 -else4631: + br label %endif4639 +else4638: %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 + 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 %then4633, label %else4634 -then4633: + 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 %endif4635 -else4634: + br label %endif4642 +else4641: %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 + 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 %then4636, label %else4637 -then4636: + 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 %endif4638 -else4637: + br label %endif4645 +else4644: %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 + 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 %then4639, label %else4640 -then4639: + 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 %endif4641 -else4640: + br label %endif4648 +else4647: %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 + 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 %then4642, label %else4643 -then4642: + 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 %endif4644 -else4643: + br label %endif4651 +else4650: %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 + 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 %then4645, label %else4646 -then4645: + 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 %endif4647 -else4646: + br label %endif4654 +else4653: %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 + 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 %then4648, label %else4649 -then4648: + br i1 %t122, label %then4655, label %else4656 +then4655: %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) + br i1 %t124, label %panic4658, label %ok4659 +panic4658: + call void @finch_panic(ptr @.str.2991, i64 2059, ptr @.str.2992) unreachable -ok4652: +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 %then4653, label %endif4655 -then4653: + br i1 %t127, label %then4660, label %endif4662 +then4660: %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: + 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 %panic4656, label %ok4657 -panic4656: - call void @finch_panic(ptr @.str.2990, i64 2062, ptr @.str.2991) + br i1 %t131, label %panic4663, label %ok4664 +panic4663: + call void @finch_panic(ptr @.str.2994, i64 2062, ptr @.str.2995) unreachable -ok4657: +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 @@ -42530,21 +42585,21 @@ ok4657: 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) + br i1 %t138, label %panic4665, label %ok4666 +panic4665: + call void @finch_panic(ptr @.str.2996, i64 2063, ptr @.str.2997) unreachable -ok4659: +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 %range4660, label %inrange4661 -range4660: - call void @finch_panic_index(ptr @.str.2994, i64 2063, i64 %t140, i64 %t142) + br i1 %t143, label %range4667, label %inrange4668 +range4667: + call void @finch_panic_index(ptr @.str.2998, i64 2063, i64 %t140, i64 %t142) unreachable -inrange4661: +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 @@ -42553,11 +42608,11 @@ inrange4661: %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) + br i1 %t151, label %range4669, label %inrange4670 +range4669: + call void @finch_panic_index(ptr @.str.2999, i64 2063, i64 0, i64 %t150) unreachable -inrange4663: +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 @@ -42573,32 +42628,32 @@ inrange4663: 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) + br i1 %t163, label %panic4671, label %ok4672 +panic4671: + call void @finch_panic(ptr @.str.3000, i64 2064, ptr @.str.3001) unreachable -ok4665: +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 %range4666, label %inrange4667 -range4666: - call void @finch_panic_index(ptr @.str.2998, i64 2064, i64 %t165, i64 %t167) + br i1 %t168, label %range4673, label %inrange4674 +range4673: + call void @finch_panic_index(ptr @.str.3002, i64 2064, i64 %t165, i64 %t167) unreachable -inrange4667: +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 %panic4668, label %ok4669 -panic4668: - call void @finch_panic(ptr @.str.2999, i64 2064, ptr @.str.3000) + br i1 %t174, label %panic4675, label %ok4676 +panic4675: + call void @finch_panic(ptr @.str.3003, i64 2064, ptr @.str.3004) unreachable -ok4669: +ok4676: %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 23 %t176 = load i64, ptr %t175 %t177 = load i64, ptr %t172 @@ -42608,89 +42663,89 @@ ok4669: %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 store i64 %t176, ptr %t180 store i64 %t178, ptr %t172 - br label %endif4650 -else4649: + br label %endif4657 +else4656: %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 + 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.from4670 -logic.from4670: - br i1 %t185, label %logic.end4672, label %logic.rhs4671 -logic.rhs4671: + 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.3002, i64 8, i64 0 }, ptr %a188 + 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.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: + 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 %panic4677, label %ok4678 -panic4677: - call void @finch_panic(ptr @.str.3003, i64 2066, ptr @.str.3004) + br i1 %t193, label %panic4684, label %ok4685 +panic4684: + call void @finch_panic(ptr @.str.3007, i64 2066, ptr @.str.3008) unreachable -ok4678: +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 %then4679, label %endif4681 -then4679: + 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.3005, i64 27, i64 0 }, ptr %a202 + 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 %endif4681 -endif4681: + br label %endif4688 +endif4688: %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) + br i1 %t205, label %panic4689, label %ok4690 +panic4689: + call void @finch_panic(ptr @.str.3010, i64 2069, ptr @.str.3011) unreachable -ok4683: +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 %then4684, label %endif4686 -then4684: + 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.3008, i64 31, i64 0 }, ptr %a215 + 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 %endif4686 -endif4686: + br label %endif4693 +endif4693: %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) + br i1 %t218, label %panic4694, label %ok4695 +panic4694: + call void @finch_panic(ptr @.str.3013, i64 2072, ptr @.str.3014) unreachable -ok4688: +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 %panic4689, label %ok4690 -panic4689: - call void @finch_panic(ptr @.str.3011, i64 2072, ptr @.str.3012) + br i1 %t221, label %panic4696, label %ok4697 +panic4696: + call void @finch_panic(ptr @.str.3015, i64 2072, ptr @.str.3016) unreachable -ok4690: +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 @@ -42698,11 +42753,11 @@ ok4690: %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) + br i1 %t228, label %range4698, label %inrange4699 +range4698: + call void @finch_panic_index(ptr @.str.3017, i64 2072, i64 %t225, i64 %t227) unreachable -inrange4692: +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 @@ -42716,57 +42771,57 @@ inrange4692: 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 + 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 %then4693, label %else4694 -then4693: + 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 %endif4695 -else4694: + 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 %endif4695 -endif4695: - br label %endif4676 -else4675: + 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.3015, i64 18, i64 0 }, ptr %a254 + 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 %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: + 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: ret void } @@ -42803,18 +42858,18 @@ entry: %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then4696, label %endif4698 -then4696: + br i1 %t5, label %then4703, label %endif4705 +then4703: %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 %range4706, label %inrange4707 +range4706: + call void @finch_panic_index(ptr @.str.3020, i64 2086, i64 0, i64 %t9) unreachable -inrange4700: +inrange4707: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.ast.Node, ptr %t11, i64 0 %t13 = load %S.ast.Node, ptr %t12 @@ -42824,62 +42879,62 @@ 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.3021, 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 %then4708, label %endif4710 +then4708: %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 %range4711, label %inrange4712 +range4711: + call void @finch_panic_index(ptr @.str.3022, i64 2088, i64 0, i64 %t26) unreachable -inrange4705: +inrange4712: %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.3023, i64 46, i64 0 }) + br label %endif4710 +endif4710: %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.3024, 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 %then4713, label %endif4715 +then4713: %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 %range4716, label %inrange4717 +range4716: + call void @finch_panic_index(ptr @.str.3025, i64 2091, i64 0, i64 %t41) unreachable -inrange4710: +inrange4717: %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.3026, 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.3027, 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: + 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 @@ -42891,7 +42946,7 @@ endif4708: %t64 = call { ptr, i64, i64 } @finch.gen.own(ptr %t62, %S.gen.Val %t63) %t65 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t59, %S.ast.Type %t61, { ptr, i64, i64 } %t64, i1 false) ret void -endif4698: +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 @@ -42902,28 +42957,28 @@ endif4698: %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: + 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.3024, i64 6, i64 0 }, ptr %a79 + 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.from4714 -logic.from4714: - br i1 %t81, label %logic.rhs4715, label %logic.end4716 -logic.rhs4715: + 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.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: + 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 @@ -42947,7 +43002,7 @@ then4718: %t106 = load { ptr, i64, i64 }, ptr %t105 %t107 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t100, %S.ast.Node %t101, { ptr, i64, i64 } %t103, %S.ast.Type %t104, { ptr, i64, i64 } %t106, i1 false) ret void -endif4720: +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 @@ -42957,18 +43012,18 @@ endif4720: %t114 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t113) %t115 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t108, %S.ast.Node %t109, { ptr, i64, i64 } %t111, %S.ast.Type %t112, { ptr, i64, i64 } %t114, i1 false) ret void -endif4713: +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 %range4721, label %inrange4722 -range4721: - call void @finch_panic_index(ptr @.str.3025, i64 2108, i64 0, i64 %t120) + br i1 %t121, label %range4728, label %inrange4729 +range4728: + call void @finch_panic_index(ptr @.str.3029, i64 2108, i64 0, i64 %t120) unreachable -inrange4722: +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 @@ -42979,22 +43034,22 @@ inrange4722: %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) + br i1 %t131, label %range4730, label %inrange4731 +range4730: + call void @finch_panic_index(ptr @.str.3030, i64 2108, i64 0, i64 %t130) unreachable -inrange4724: +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 %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.3027, i64 1, i64 0 }, ptr %a138 + 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.3028, i64 1, i64 0 }, ptr %a143 + 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) @@ -43024,11 +43079,11 @@ 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 %panic4732, label %ok4733 +panic4732: + call void @finch_panic(ptr @.str.3033, i64 2113, ptr @.str.3034) unreachable -ok4726: +ok4733: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -43039,11 +43094,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 %range4734, label %inrange4735 +range4734: + call void @finch_panic_index(ptr @.str.3035, i64 2113, i64 %t11, i64 %t13) unreachable -inrange4728: +inrange4735: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i64 %t11 %t17 = load %S.gen.StructDef, ptr %t16 @@ -43053,28 +43108,28 @@ 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 %then4736, label %endif4738 +then4736: ret i1 false -endif4731: +endif4738: %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 %panic4739, label %ok4740 +panic4739: + call void @finch_panic(ptr @.str.3036, i64 2117, ptr @.str.3037) unreachable -ok4733: +ok4740: %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 %range4741, label %inrange4742 +range4741: + call void @finch_panic_index(ptr @.str.3038, i64 2117, i64 %t28, i64 %t30) unreachable -inrange4735: +inrange4742: %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 @@ -43083,23 +43138,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 %range4743, label %inrange4744 +range4743: + call void @finch_panic_index(ptr @.str.3039, i64 2117, i64 %t36, i64 %t38) unreachable -inrange4737: +inrange4744: %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.cond4745 +each.cond4745: %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.body4746, label %each.end4748 +each.body4746: %t48 = load ptr, ptr %t42 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 %t50 = load %S.ast.Node, ptr %t49 @@ -43108,17 +43163,17 @@ 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 %then4749, label %endif4751 +then4749: ret i1 true -endif4744: - br label %each.step4740 -each.step4740: +endif4751: + br label %each.step4747 +each.step4747: %t56 = load i64, ptr %a43 %t57 = add i64 %t56, 1 store i64 %t57, ptr %a43 - br label %each.cond4738 -each.end4741: + br label %each.cond4745 +each.end4748: ret i1 false } @@ -43179,11 +43234,11 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %t3 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range4745, label %inrange4746 -range4745: - call void @finch_panic_index(ptr @.str.3036, i64 2126, i64 0, i64 %t5) + br i1 %t6, label %range4752, label %inrange4753 +range4752: + call void @finch_panic_index(ptr @.str.3040, i64 2126, i64 0, i64 %t5) unreachable -inrange4746: +inrange4753: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -43197,40 +43252,40 @@ 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 %then4754, label %endif4756 +then4754: %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.from4757 +logic.from4757: + br i1 %t25, label %logic.rhs4758, label %logic.end4759 +logic.rhs4758: %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.3041, 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.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: %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.3042, 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.3043, 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 @@ -43239,84 +43294,84 @@ then4754: 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 + 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 %endif4756 -endif4756: + br label %endif4763 +endif4763: %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: + 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.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: + 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.3041, i64 19, i64 0 }, ptr %a64 + 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.3042, i64 18, i64 0 }, ptr %a69 + 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 %endif4763 -endif4763: - br label %endif4749 -endif4749: - store { ptr, i64, i64 } { ptr @.str.3043, i64 9, i64 0 }, ptr %a71 + 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.3044, i64 3, i64 0 }, ptr %a75 + 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 %then4764, label %endif4766 -then4764: + br i1 %t77, label %then4771, label %endif4773 +then4771: %t78 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3045, i64 1, i64 0 }, ptr %a80 + 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.3046, i64 1, i64 0 }, ptr %a85 + 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 %endif4766 -endif4766: + 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.3047, i64 1, i64 0 }, ptr %a90 + 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 %then4767, label %endif4769 -then4767: + 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 %range4770, label %inrange4771 -range4770: - call void @finch_panic_index(ptr @.str.3048, i64 2142, i64 1, i64 %t96) + br i1 %t97, label %range4777, label %inrange4778 +range4777: + call void @finch_panic_index(ptr @.str.3052, i64 2142, i64 1, i64 %t96) unreachable -inrange4771: +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 @@ -43334,11 +43389,11 @@ inrange4771: %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) + br i1 %t114, label %range4779, label %inrange4780 +range4779: + call void @finch_panic_index(ptr @.str.3053, i64 2144, i64 1, i64 %t113) unreachable -inrange4773: +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 @@ -43357,17 +43412,17 @@ inrange4773: %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: +endif4776: %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 %range4781, label %inrange4782 +range4781: + call void @finch_panic_index(ptr @.str.3054, i64 2148, i64 1, i64 %t133) unreachable -inrange4775: +inrange4782: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 %t137 = load %S.ast.Node, ptr %t136 @@ -43396,7 +43451,7 @@ inrange4775: %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) + 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 @@ -43438,9 +43493,9 @@ entry: %t4 = load ptr, ptr %a1 %t5 = load %S.ast.Node, ptr %a2 %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3052, i64 4, i64 0 }) + %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3056, 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 }) + %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) @@ -43464,45 +43519,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 %range4783, label %inrange4784 +range4783: + call void @finch_panic_index(ptr @.str.3058, i64 2161, i64 0, i64 %t6) unreachable -inrange4777: +inrange4784: %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.3059, 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.3060, 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.3061, 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 %then4785, label %else4786 +then4785: %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 %endif4787 +else4786: %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 %endif4787 +endif4787: %t34 = load ptr, ptr %a1 %t35 = load { ptr, i64, i64 }, ptr %a15 call void @finch.gen.label(ptr %t34, { ptr, i64, i64 } %t35) @@ -43511,22 +43566,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 %range4788, label %inrange4789 +range4788: + call void @finch_panic_index(ptr @.str.3062, i64 2171, i64 1, i64 %t39) unreachable -inrange4782: +inrange4789: %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 %panic4790, label %ok4791 +panic4790: + call void @finch_panic(ptr @.str.3063, i64 2172, ptr @.str.3064) unreachable -ok4784: +ok4791: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 9 %t47 = load i1, ptr %t46 %t48 = xor i1 %t47, true @@ -43538,8 +43593,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 %then4792, label %else4793 +then4792: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a18 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -43548,52 +43603,52 @@ 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 %range4795, label %inrange4796 +range4795: + call void @finch_panic_index(ptr @.str.3065, i64 2176, i64 2, i64 %t61) unreachable -inrange4789: +inrange4796: %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.from4797 +logic.from4797: + br i1 %t66, label %logic.end4799, label %logic.rhs4798 +logic.rhs4798: %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 %panic4800, label %ok4801 +panic4800: + call void @finch_panic(ptr @.str.3066, i64 2177, ptr @.str.3067) unreachable -ok4794: +ok4801: %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.rend4802 +logic.rend4802: + br label %logic.end4799 +logic.end4799: + %t72 = phi i1 [ true, %logic.from4797 ], [ %t71, %logic.rend4802 ] 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 %endif4794 +else4793: store i1 true, ptr %a49 - br label %endif4787 -endif4787: + br label %endif4794 +endif4794: %t75 = load i1, ptr %a49 - br i1 %t75, label %then4796, label %endif4798 -then4796: + br i1 %t75, label %then4803, label %endif4805 +then4803: %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 %endif4805 +endif4805: ret void } @@ -43618,13 +43673,13 @@ entry: store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3064, i64 10, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3068, 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.3069, 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.3070, i64 9, i64 0 }) store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a5 @@ -43636,86 +43691,86 @@ entry: %t17 = load { ptr, i64, i64 }, ptr %t16 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 0, %t18 - br i1 %t19, label %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.3067, i64 2193, i64 0, i64 %t18) + br i1 %t19, label %range4806, label %inrange4807 +range4806: + call void @finch_panic_index(ptr @.str.3071, i64 2193, i64 0, i64 %t18) unreachable -inrange4800: +inrange4807: %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.3072, 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.from4808 +logic.from4808: + br i1 %t27, label %logic.rhs4809, label %logic.end4810 +logic.rhs4809: %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 %range4811, label %inrange4812 +range4811: + call void @finch_panic_index(ptr @.str.3073, i64 2193, i64 0, i64 %t30) unreachable -inrange4805: +inrange4812: %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.3074, 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.rend4813 +logic.rend4813: + br label %logic.end4810 +logic.end4810: + %t40 = phi i1 [ false, %logic.from4808 ], [ %t39, %logic.rend4813 ] 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 %range4814, label %inrange4815 +range4814: + call void @finch_panic_index(ptr @.str.3075, i64 2194, i64 0, i64 %t45) unreachable -inrange4808: +inrange4815: %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 %then4816, label %else4817 +then4816: %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 %endif4818 +else4817: %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 %endif4818 +endif4818: %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 %panic4819, label %ok4820 +panic4819: + call void @finch_panic(ptr @.str.3076, i64 2201, ptr @.str.3077) unreachable -ok4813: +ok4820: %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 %t65 = load { ptr, i64, i64 }, ptr %a5 @@ -43730,11 +43785,11 @@ 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 %panic4821, label %ok4822 +panic4821: + call void @finch_panic(ptr @.str.3078, i64 2201, ptr @.str.3079) unreachable -ok4815: +ok4822: %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 @@ -43750,11 +43805,11 @@ ok4815: %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) + br i1 %t88, label %range4823, label %inrange4824 +range4823: + call void @finch_panic_index(ptr @.str.3080, i64 2202, i64 1, i64 %t87) unreachable -inrange4817: +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 @@ -43765,31 +43820,31 @@ inrange4817: %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) + br i1 %t98, label %range4825, label %inrange4826 +range4825: + call void @finch_panic_index(ptr @.str.3081, i64 2203, i64 1, i64 %t97) unreachable -inrange4819: +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 %panic4820, label %ok4821 -panic4820: - call void @finch_panic(ptr @.str.3078, i64 2204, ptr @.str.3079) + br i1 %t103, label %panic4827, label %ok4828 +panic4827: + call void @finch_panic(ptr @.str.3082, i64 2204, ptr @.str.3083) unreachable -ok4821: +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 %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3080, i64 2204, ptr @.str.3081) + br i1 %t107, label %panic4829, label %ok4830 +panic4829: + call void @finch_panic(ptr @.str.3084, i64 2204, ptr @.str.3085) unreachable -ok4823: +ok4830: %t108 = sub i64 %t106, 1 %t109 = load ptr, ptr %t104 %t110 = getelementptr inbounds %S.gen.Loop, ptr %t109, i64 %t108 @@ -43800,23 +43855,23 @@ ok4823: 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: + 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.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: + 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 %endif4830 -endif4830: + br label %endif4837 +endif4837: ret void } @@ -43837,80 +43892,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.3086, 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 %then4838, label %endif4840 +then4838: ret i1 true -endif4833: +endif4840: %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.3087, 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.from4841 +logic.from4841: + br i1 %t13, label %logic.end4843, label %logic.rhs4842 +logic.rhs4842: %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.3088, 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.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: %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.3089, 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.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: ret i1 false -endif4844: +endif4851: %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.cond4852 +each.cond4852: %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.body4853, label %each.end4855 +each.body4853: %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 %then4856, label %endif4858 +then4856: ret i1 true -endif4851: - br label %each.step4847 -each.step4847: +endif4858: + br label %each.step4854 +each.step4854: %t40 = load i64, ptr %a29 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a29 - br label %each.cond4845 -each.end4848: + br label %each.cond4852 +each.end4855: ret i1 false } @@ -43959,29 +44014,29 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range4852, label %inrange4853 -range4852: - call void @finch_panic_index(ptr @.str.3086, i64 2228, i64 0, i64 %t7) + br i1 %t8, label %range4859, label %inrange4860 +range4859: + call void @finch_panic_index(ptr @.str.3090, i64 2228, i64 0, i64 %t7) unreachable -inrange4853: +inrange4860: %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.3091, 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 %range4861, label %inrange4862 +range4861: + call void @finch_panic_index(ptr @.str.3092, i64 2228, i64 0, i64 %t16) unreachable -inrange4855: +inrange4862: %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 }) + %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) @@ -43993,29 +44048,29 @@ inrange4855: %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) + br i1 %t32, label %range4863, label %inrange4864 +range4863: + call void @finch_panic_index(ptr @.str.3094, i64 2229, i64 1, i64 %t31) unreachable -inrange4857: +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.3091, i64 3, i64 0 }) + %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 %range4858, label %inrange4859 -range4858: - call void @finch_panic_index(ptr @.str.3092, i64 2229, i64 1, i64 %t40) + br i1 %t41, label %range4865, label %inrange4866 +range4865: + call void @finch_panic_index(ptr @.str.3096, i64 2229, i64 1, i64 %t40) unreachable -inrange4859: +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.3093, i64 18, i64 0 }) + %t45 = call %S.gen.Val @finch.gen.coerce(ptr %t27, %S.gen.Val %t36, %S.ast.Type %t37, %S.ast.Node %t44, { ptr, i64, i64 } { ptr @.str.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) @@ -44027,21 +44082,21 @@ inrange4859: %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 }) + %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.3095, i64 8, i64 0 }) + %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.3096, i64 8, i64 0 }) + %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.3097, i64 8, i64 0 }) + %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.3098, i64 7, i64 0 }) + %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 @@ -44051,16 +44106,16 @@ inrange4859: call void @finch.gen.label(ptr %t74, { ptr, i64, i64 } %t75) %t76 = load ptr, ptr %a1 %t77 = load { ptr, i64, i64 }, ptr %a59 - %t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t76, { ptr, i64, i64 } { ptr @.str.3099, i64 3, i64 0 }, { ptr, i64, i64 } %t77) + %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.3100, i64 13, i64 0 }, ptr %a83 + 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.3101, i64 2, i64 0 }, ptr %a88 + 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 @@ -44080,11 +44135,11 @@ inrange4859: 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) + br i1 %t104, label %panic4867, label %ok4868 +panic4867: + call void @finch_panic(ptr @.str.3106, i64 2242, ptr @.str.3107) unreachable -ok4861: +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 @@ -44099,11 +44154,11 @@ ok4861: %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) + br i1 %t118, label %panic4869, label %ok4870 +panic4869: + call void @finch_panic(ptr @.str.3108, i64 2242, ptr @.str.3109) unreachable -ok4863: +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 @@ -44120,31 +44175,31 @@ ok4863: %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) + br i1 %t131, label %range4871, label %inrange4872 +range4871: + call void @finch_panic_index(ptr @.str.3110, i64 2243, i64 2, i64 %t130) unreachable -inrange4865: +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 %panic4866, label %ok4867 -panic4866: - call void @finch_panic(ptr @.str.3107, i64 2244, ptr @.str.3108) + br i1 %t136, label %panic4873, label %ok4874 +panic4873: + call void @finch_panic(ptr @.str.3111, i64 2244, ptr @.str.3112) unreachable -ok4867: +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 %panic4868, label %ok4869 -panic4868: - call void @finch_panic(ptr @.str.3109, i64 2244, ptr @.str.3110) + br i1 %t140, label %panic4875, label %ok4876 +panic4875: + call void @finch_panic(ptr @.str.3113, i64 2244, ptr @.str.3114) unreachable -ok4869: +ok4876: %t141 = sub i64 %t139, 1 %t142 = load ptr, ptr %t137 %t143 = getelementptr inbounds %S.gen.Loop, ptr %t142, i64 %t141 @@ -44158,22 +44213,22 @@ ok4869: 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) + %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.3113, i64 8, i64 0 }, ptr %a157 + 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.3114, i64 3, i64 0 }, ptr %a162 + 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.3112, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165) + 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) %t166 = load ptr, ptr %a1 %t167 = load { ptr, i64, i64 }, ptr %a62 call void @finch.gen.br(ptr %t166, { ptr, i64, i64 } %t167) @@ -44308,11 +44363,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 %range4877, label %inrange4878 +range4877: + call void @finch_panic_index(ptr @.str.3119, i64 2256, i64 0, i64 %t8) unreachable -inrange4871: +inrange4878: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -44324,11 +44379,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 %range4879, label %inrange4880 +range4879: + call void @finch_panic_index(ptr @.str.3120, i64 2257, i64 1, i64 %t19) unreachable -inrange4873: +inrange4880: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -44337,20 +44392,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.from4881 +logic.from4881: + br i1 %t28, label %logic.rhs4882, label %logic.end4883 +logic.rhs4882: %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 %range4884, label %inrange4885 +range4884: + call void @finch_panic_index(ptr @.str.3121, i64 2258, i64 0, i64 %t32) unreachable -inrange4878: +inrange4885: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 0 %t36 = load %S.ast.Node, ptr %t35 @@ -44359,42 +44414,42 @@ 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 %range4886, label %inrange4887 +range4886: + call void @finch_panic_index(ptr @.str.3122, i64 2258, i64 1, i64 %t40) unreachable -inrange4880: +inrange4887: %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 ] + 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.3119, i64 3, i64 0 }) + %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.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 + 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 %then4882, label %endif4884 -then4882: + br i1 %t54, label %then4889, label %endif4891 +then4889: %t55 = load ptr, ptr %a1 %t56 = load ptr, ptr %a1 %t57 = load ptr, ptr %a1 %t58 = load %S.ast.Type, ptr %a4 %t59 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t57, %S.ast.Type %t58) - store { ptr, i64, i64 } { ptr @.str.3124, i64 23, i64 0 }, ptr %a61 + 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.3125, i64 6, i64 0 }, ptr %a66 + 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 @@ -44403,28 +44458,28 @@ then4882: 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 + 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.3123, i64 3, i64 0 }, { ptr, i64, i64 } %t77) + %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 %endif4884 -endif4884: + br label %endif4891 +endif4891: %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 }) + %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.3128, i64 9, i64 0 }) + %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.3129, i64 8, i64 0 }) + %t86 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t85, { ptr, i64, i64 } { ptr @.str.3133, i64 8, i64 0 }) store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3130, i64 8, i64 0 }) + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3134, 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.3135, i64 7, i64 0 }) store { ptr, i64, i64 } %t92, ptr %a93 %t94 = load ptr, ptr %a1 %t95 = load { ptr, i64, i64 }, ptr %a81 @@ -44433,35 +44488,35 @@ endif4884: %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: + 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.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: + 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.3132, i64 11, i64 0 }) + %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.3133, i64 8, i64 0 }) + %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.3135, i64 23, i64 0 }, ptr %a113 + 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.3136, i64 6, i64 0 }, ptr %a118 + 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 @@ -44470,21 +44525,21 @@ then4889: 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 + 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.3134, i64 3, i64 0 }, { ptr, i64, i64 } %t129) + %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.3138, i64 12, i64 0 }, ptr %a136 + 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.3139, i64 2, i64 0 }, ptr %a141 + 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 @@ -44503,32 +44558,32 @@ then4889: %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) + br i1 %t156, label %panic4899, label %ok4900 +panic4899: + call void @finch_panic(ptr @.str.3145, i64 2279, ptr @.str.3146) unreachable -ok4893: +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 %range4894, label %inrange4895 -range4894: - call void @finch_panic_index(ptr @.str.3143, i64 2279, i64 %t159, i64 %t161) + br i1 %t162, label %range4901, label %inrange4902 +range4901: + call void @finch_panic_index(ptr @.str.3147, i64 2279, i64 %t159, i64 %t161) unreachable -inrange4895: +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.3140, i64 33, i64 0 }, ptr %a168 + 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.3144, i64 6, i64 0 }, ptr %a173 + 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 @@ -44540,41 +44595,41 @@ inrange4895: 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 + 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.3146, i64 11, i64 0 }) + 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 %panic4896, label %ok4897 -panic4896: - call void @finch_panic(ptr @.str.3147, i64 2281, ptr @.str.3148) + br i1 %t189, label %panic4903, label %ok4904 +panic4903: + call void @finch_panic(ptr @.str.3151, i64 2281, ptr @.str.3152) unreachable -ok4897: +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 %endif4891 -endif4891: + 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.3149, i64 3, i64 0 }, { ptr, i64, i64 } %t194) + %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.3151, i64 23, i64 0 }, ptr %a203 + 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 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.3156, i64 6, i64 0 }, ptr %a208 call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) %t209 = load { ptr, i64, i64 }, ptr %a206 %t210 = load { ptr, i64, i64 }, ptr %a3 @@ -44583,21 +44638,21 @@ endif4891: 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 + 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.3150, i64 3, i64 0 }, { ptr, i64, i64 } %t219) + %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 } %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 } { 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.3155, i64 2, i64 0 }, ptr %a231 + 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 @@ -44623,17 +44678,17 @@ endif4891: %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) + %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.3157, i64 12, i64 0 }, ptr %a260 + 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.3158, i64 3, i64 0 }, ptr %a265 + 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) @@ -44645,11 +44700,11 @@ endif4891: 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) + br i1 %t273, label %panic4905, label %ok4906 +panic4905: + call void @finch_panic(ptr @.str.3163, i64 2292, ptr @.str.3164) unreachable -ok4899: +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 @@ -44664,11 +44719,11 @@ ok4899: %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) + br i1 %t287, label %panic4907, label %ok4908 +panic4907: + call void @finch_panic(ptr @.str.3165, i64 2292, ptr @.str.3166) unreachable -ok4901: +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 @@ -44693,15 +44748,15 @@ ok4901: %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: + 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 %endif4904 -endif4904: + 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 @@ -44713,8 +44768,8 @@ endif4904: %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: + 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 @@ -44726,15 +44781,15 @@ then4905: %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: + 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 %endif4910 -endif4910: + 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 @@ -44742,18 +44797,18 @@ endif4910: %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: + 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 %range4911, label %inrange4912 -range4911: - call void @finch_panic_index(ptr @.str.3163, i64 2306, i64 1, i64 %t348) + br i1 %t349, label %range4918, label %inrange4919 +range4918: + call void @finch_panic_index(ptr @.str.3167, i64 2306, i64 1, i64 %t348) unreachable -inrange4912: +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 @@ -44762,20 +44817,20 @@ inrange4912: 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) + br i1 %t355, label %panic4920, label %ok4921 +panic4920: + call void @finch_panic(ptr @.str.3168, i64 2308, ptr @.str.3169) unreachable -ok4914: +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 %panic4915, label %ok4916 -panic4915: - call void @finch_panic(ptr @.str.3166, i64 2308, ptr @.str.3167) + br i1 %t359, label %panic4922, label %ok4923 +panic4922: + call void @finch_panic(ptr @.str.3170, i64 2308, ptr @.str.3171) unreachable -ok4916: +ok4923: %t360 = sub i64 %t358, 1 %t361 = load ptr, ptr %t356 %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 @@ -44789,22 +44844,22 @@ ok4916: 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) + %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.3170, i64 8, i64 0 }, ptr %a376 + 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.3171, i64 3, i64 0 }, ptr %a381 + 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.3169, i64 3, i64 0 }, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384) + 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) @@ -44911,23 +44966,23 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range4917, label %inrange4918 -range4917: - call void @finch_panic_index(ptr @.str.3172, i64 2319, i64 0, i64 %t7) + br i1 %t8, label %range4924, label %inrange4925 +range4924: + call void @finch_panic_index(ptr @.str.3176, i64 2319, i64 0, i64 %t7) unreachable -inrange4918: +inrange4925: %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.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 %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 %then4926, label %else4927 +then4926: %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 @@ -44942,8 +44997,8 @@ then4919: 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: + 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 @@ -44956,16 +45011,16 @@ else4920: %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: + 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.3175, i64 3, i64 0 }, ptr %a44 + 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 %then4922, label %endif4924 -then4922: + 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 @@ -44976,75 +45031,75 @@ then4922: %t53 = load ptr, ptr %a1 call void @finch.gen.popScope(ptr %t53) ret void -endif4924: +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.3176, i64 5, i64 0 }, ptr %a57 + 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.from4925 -logic.from4925: - br i1 %t59, label %logic.rhs4926, label %logic.end4927 -logic.rhs4926: + 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.3177, i64 3, i64 0 }, ptr %a63 + 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.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: + 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 %range4932, label %inrange4933 -range4932: - call void @finch_panic_index(ptr @.str.3178, i64 2335, i64 0, i64 %t70) + br i1 %t71, label %range4939, label %inrange4940 +range4939: + call void @finch_panic_index(ptr @.str.3182, i64 2335, i64 0, i64 %t70) unreachable -inrange4933: +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 %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 } { 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.3180, i64 36, i64 0 }, ptr %a83 + 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 %endif4931 -endif4931: - %t85 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3181, i64 4, i64 0 }) + 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.3182, i64 5, i64 0 }, ptr %a90 + 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 %then4934, label %endif4936 -then4934: + br i1 %t92, label %then4941, label %endif4943 +then4941: %t93 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 %t94 = load { ptr, i64, i64 }, ptr %t93 %t95 = extractvalue { ptr, i64, i64 } %t94, 1 %t96 = icmp uge i64 0, %t95 - br i1 %t96, label %range4937, label %inrange4938 -range4937: - call void @finch_panic_index(ptr @.str.3183, i64 2339, i64 0, i64 %t95) + br i1 %t96, label %range4944, label %inrange4945 +range4944: + call void @finch_panic_index(ptr @.str.3187, i64 2339, i64 0, i64 %t95) unreachable -inrange4938: +inrange4945: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0 %t99 = load %S.ast.Type, ptr %t98 @@ -45052,36 +45107,36 @@ inrange4938: 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: + br label %endif4943 +endif4943: %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: + 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.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: + 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 %range4946, label %inrange4947 -range4946: - call void @finch_panic_index(ptr @.str.3184, i64 2341, i64 0, i64 %t112) + br i1 %t113, label %range4953, label %inrange4954 +range4953: + call void @finch_panic_index(ptr @.str.3188, i64 2341, i64 0, i64 %t112) unreachable -inrange4947: +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 @@ -45090,38 +45145,38 @@ inrange4947: %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) + br i1 %t121, label %range4955, label %inrange4956 +range4955: + call void @finch_panic_index(ptr @.str.3189, i64 2341, i64 1, i64 %t120) unreachable -inrange4949: +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.rend4950 -logic.rend4950: - br label %logic.end4945 -logic.end4945: - %t126 = phi i1 [ false, %logic.from4943 ], [ %t125, %logic.rend4950 ] + 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.3186, i64 3, i64 0 }) + %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.3187, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3188, i64 1, i64 0 }, { ptr, i64, i64 } %t132) + 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.3189, i64 9, i64 0 }) + %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.3190, i64 9, i64 0 }) + %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 %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 }) + %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.3192, i64 8, i64 0 }) + %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 @@ -45132,29 +45187,29 @@ logic.end4945: %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 } { 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.3195, i64 14, i64 0 }, ptr %a158 + 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.3193, i64 3, i64 0 }, { ptr, i64, i64 } %t160) + %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.3196, i64 3, i64 0 }, { ptr, i64, i64 } %t164) + %t165 = call { ptr, i64, i64 } @finch.gen.load(ptr %t163, { ptr, i64, i64 } { ptr @.str.3200, i64 3, i64 0 }, { ptr, i64, i64 } %t164) store { ptr, i64, i64 } %t165, ptr %a166 %t167 = load ptr, ptr %a1 %t168 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3197, i64 13, i64 0 }, ptr %a170 + 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.3198, i64 2, i64 0 }, ptr %a175 + 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 @@ -45174,18 +45229,18 @@ logic.end4945: 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) + %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.3200, i64 23, i64 0 }, ptr %a199 + 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.3201, i64 6, i64 0 }, ptr %a204 + 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 @@ -45194,7 +45249,7 @@ logic.end4945: 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 + 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 @@ -45212,22 +45267,22 @@ logic.end4945: %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: + 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 %endif4953 -endif4953: + br label %endif4960 +endif4960: %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) + br i1 %t235, label %panic4961, label %ok4962 +panic4961: + call void @finch_panic(ptr @.str.3207, i64 2361, ptr @.str.3208) unreachable -ok4955: +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 @@ -45242,11 +45297,11 @@ ok4955: %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) + br i1 %t249, label %panic4963, label %ok4964 +panic4963: + call void @finch_panic(ptr @.str.3209, i64 2361, ptr @.str.3210) unreachable -ok4957: +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 @@ -45270,13 +45325,13 @@ ok4957: %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: + 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.3207, i64 3, i64 0 }) + %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 @@ -45285,8 +45340,8 @@ then4958: 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: + br label %endif4967 +endif4967: %t281 = load ptr, ptr %a1 %t282 = load %S.ast.Node, ptr %a2 %t283 = load { ptr, i64, i64 }, ptr %a264 @@ -45298,11 +45353,11 @@ endif4960: %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) + br i1 %t291, label %range4968, label %inrange4969 +range4968: + call void @finch_panic_index(ptr @.str.3212, i64 2369, i64 1, i64 %t290) unreachable -inrange4962: +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 @@ -45311,20 +45366,20 @@ inrange4962: 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) + br i1 %t297, label %panic4970, label %ok4971 +panic4970: + call void @finch_panic(ptr @.str.3213, i64 2371, ptr @.str.3214) unreachable -ok4964: +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 %panic4965, label %ok4966 -panic4965: - call void @finch_panic(ptr @.str.3211, i64 2371, ptr @.str.3212) + br i1 %t301, label %panic4972, label %ok4973 +panic4972: + call void @finch_panic(ptr @.str.3215, i64 2371, ptr @.str.3216) unreachable -ok4966: +ok4973: %t302 = sub i64 %t300, 1 %t303 = load ptr, ptr %t298 %t304 = getelementptr inbounds %S.gen.Loop, ptr %t303, i64 %t302 @@ -45338,22 +45393,22 @@ ok4966: call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) %t310 = load ptr, ptr %a1 %t311 = load { ptr, i64, i64 }, ptr %a130 - %t312 = call { ptr, i64, i64 } @finch.gen.load(ptr %t310, { ptr, i64, i64 } { ptr @.str.3213, i64 3, i64 0 }, { ptr, i64, i64 } %t311) + %t312 = call { ptr, i64, i64 } @finch.gen.load(ptr %t310, { ptr, i64, i64 } { ptr @.str.3217, i64 3, i64 0 }, { ptr, i64, i64 } %t311) store { ptr, i64, i64 } %t312, ptr %a313 %t314 = load ptr, ptr %a1 %t315 = load ptr, ptr %a1 %t316 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } { ptr @.str.3215, i64 8, i64 0 }, ptr %a318 + 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.3216, i64 3, i64 0 }, ptr %a323 + 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.3214, i64 3, i64 0 }, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326) + 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) @@ -45502,88 +45557,88 @@ entry: 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 %panic4974, label %ok4975 +panic4974: + call void @finch_panic(ptr @.str.3221, i64 2382, ptr @.str.3222) unreachable -ok4968: +ok4975: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then4969, label %endif4971 -then4969: + br i1 %t7, label %then4976, label %endif4978 +then4976: %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.3223, i64 33, i64 0 }) + br label %endif4978 +endif4978: %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.from4979 +logic.from4979: + br i1 %t13, label %logic.rhs4980, label %logic.end4981 +logic.rhs4980: %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 %range4982, label %inrange4983 +range4982: + call void @finch_panic_index(ptr @.str.3224, i64 2386, i64 0, i64 %t16) unreachable -inrange4976: +inrange4983: %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.3225, 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.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: %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 %range4988, label %inrange4989 +range4988: + call void @finch_panic_index(ptr @.str.3226, i64 2386, i64 0, i64 %t29) unreachable -inrange4982: +inrange4989: %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.3227, 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.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: %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 %range4994, label %inrange4995 +range4994: + call void @finch_panic_index(ptr @.str.3228, i64 2387, i64 0, i64 %t42) unreachable -inrange4988: +inrange4995: %t44 = extractvalue { ptr, i64, i64 } %t41, 0 %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 0 %t46 = load %S.ast.Node, ptr %t45 @@ -45593,71 +45648,71 @@ 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 %panic4996, label %ok4997 +panic4996: + call void @finch_panic(ptr @.str.3229, i64 2388, ptr @.str.3230) unreachable -ok4990: +ok4997: %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12 %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 %t55 = load i1, ptr %t54 %t56 = xor i1 %t55, true - br i1 %t56, label %then4991, label %endif4993 -then4991: - store { ptr, i64, i64 } { ptr @.str.3227, i64 1, i64 0 }, ptr %a57 + br i1 %t56, label %then4998, label %endif5000 +then4998: + store { ptr, i64, i64 } { ptr @.str.3231, 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 %panic5001, label %ok5002 +panic5001: + call void @finch_panic(ptr @.str.3232, i64 2390, ptr @.str.3233) unreachable -ok4995: +ok5002: %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12 %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 %t63 = load { ptr, i64, i64 }, ptr %t62 store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3230, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.3234, 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 %then5003, label %endif5005 +then5003: %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 %panic5006, label %ok5007 +panic5006: + call void @finch_panic(ptr @.str.3235, i64 2391, ptr @.str.3236) unreachable -ok5000: +ok5007: %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12 %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 %t72 = load %S.ast.Type, ptr %t71 %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3233, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.3237, 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: + 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 %panic5001, label %ok5002 -panic5001: - call void @finch_panic(ptr @.str.3235, i64 2393, ptr @.str.3236) + br i1 %t81, label %panic5008, label %ok5009 +panic5008: + call void @finch_panic(ptr @.str.3239, i64 2393, ptr @.str.3240) unreachable -ok5002: +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.3234, i64 1, i64 0 }, ptr %a86 + 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.3237, i64 64, i64 0 }, ptr %a91 + 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 @@ -45666,44 +45721,44 @@ ok5002: 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 + store { ptr, i64, i64 } { ptr @.str.3242, i64 1, i64 0 }, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 call void @finch.gen.fail(ptr %t78, %S.ast.Node %t79, { ptr, i64, i64 } %t101) - br label %endif4993 -endif4993: + 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.3239, i64 5, i64 0 }) + 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 %range5003, label %inrange5004 -range5003: - call void @finch_panic_index(ptr @.str.3240, i64 2396, i64 0, i64 %t108) + br i1 %t109, label %range5010, label %inrange5011 +range5010: + call void @finch_panic_index(ptr @.str.3244, i64 2396, i64 0, i64 %t108) unreachable -inrange5004: +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.3241, i64 3, i64 0 }) + %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 %range5005, label %inrange5006 -range5005: - call void @finch_panic_index(ptr @.str.3242, i64 2396, i64 0, i64 %t117) + br i1 %t118, label %range5012, label %inrange5013 +range5012: + call void @finch_panic_index(ptr @.str.3246, i64 2396, i64 0, i64 %t117) unreachable -inrange5006: +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.3243, i64 17, i64 0 }) + %t122 = call %S.gen.Val @finch.gen.coerce(ptr %t104, %S.gen.Val %t113, %S.ast.Type %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3247, i64 17, i64 0 }) store %S.gen.Val %t122, ptr %a123 %t124 = load ptr, ptr %a1 %t125 = load %S.gen.Val, ptr %a123 @@ -45715,40 +45770,40 @@ inrange5006: %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) + br i1 %t132, label %panic5014, label %ok5015 +panic5014: + call void @finch_panic(ptr @.str.3249, i64 2399, ptr @.str.3250) unreachable -ok5008: +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.3244, i64 4, i64 0 }, ptr %a137 + 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.3247, i64 1, i64 0 }, ptr %a142 + 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 %panic5009, label %ok5010 -panic5009: - call void @finch_panic(ptr @.str.3249, i64 2399, ptr @.str.3250) + br i1 %t147, label %panic5016, label %ok5017 +panic5016: + call void @finch_panic(ptr @.str.3253, i64 2399, ptr @.str.3254) unreachable -ok5010: +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.3248, i64 12, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3252, i64 12, i64 0 }, ptr %a152 store { ptr, i64, i64 } %t150, ptr %a153 call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) %t154 = load { ptr, i64, i64 }, ptr %a151 store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3251, i64 36, i64 0 }, ptr %a157 + 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 @@ -45757,7 +45812,7 @@ ok5010: 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 + 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) @@ -45768,157 +45823,157 @@ ok5010: 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) + br i1 %t174, label %panic5018, label %ok5019 +panic5018: + call void @finch_panic(ptr @.str.3257, i64 2400, ptr @.str.3258) unreachable -ok5012: +ok5019: %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9 store i1 true, ptr %t175 ret void -endif4986: +endif4993: %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) + br i1 %t177, label %panic5020, label %ok5021 +panic5020: + call void @finch_panic(ptr @.str.3259, i64 2403, ptr @.str.3260) unreachable -ok5014: +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.3257, i64 4, i64 0 }, ptr %a183 + 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 %then5015, label %endif5017 -then5015: + 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 %then5018, label %endif5020 -then5018: + 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 %range5021, label %inrange5022 -range5021: - call void @finch_panic_index(ptr @.str.3258, i64 2405, i64 0, i64 %t193) + br i1 %t194, label %range5028, label %inrange5029 +range5028: + call void @finch_panic_index(ptr @.str.3262, i64 2405, i64 0, i64 %t193) unreachable -inrange5022: +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 %panic5023, label %ok5024 -panic5023: - call void @finch_panic(ptr @.str.3260, i64 2405, ptr @.str.3261) + br i1 %t199, label %panic5030, label %ok5031 +panic5030: + call void @finch_panic(ptr @.str.3264, i64 2405, ptr @.str.3265) unreachable -ok5024: +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.3259, i64 1, i64 0 }, ptr %a204 + 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.3262, i64 46, i64 0 }, ptr %a209 + 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 %endif5020 -endif5020: + 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 %panic5025, label %ok5026 -panic5025: - call void @finch_panic(ptr @.str.3263, i64 2408, ptr @.str.3264) + br i1 %t213, label %panic5032, label %ok5033 +panic5032: + call void @finch_panic(ptr @.str.3267, i64 2408, ptr @.str.3268) unreachable -ok5026: +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 %then5027, label %else5028 -then5027: + br i1 %t216, label %then5034, label %else5035 +then5034: %t217 = load ptr, ptr %a1 %t218 = load ptr, ptr %a1 %t219 = load ptr, ptr %a1 %t220 = icmp eq ptr %t219, null - br i1 %t220, label %panic5030, label %ok5031 -panic5030: - call void @finch_panic(ptr @.str.3266, i64 2409, ptr @.str.3267) + br i1 %t220, label %panic5037, label %ok5038 +panic5037: + call void @finch_panic(ptr @.str.3270, i64 2409, ptr @.str.3271) unreachable -ok5031: +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.3265, i64 4, i64 0 }, ptr %a225 + 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.3268, i64 53, i64 0 }, ptr %a230 + 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 %endif5029 -else5028: + br label %endif5036 +else5035: %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: + call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3273, i64 8, i64 0 }) + br label %endif5036 +endif5036: %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) + br i1 %t234, label %panic5039, label %ok5040 +panic5039: + call void @finch_panic(ptr @.str.3274, i64 2413, ptr @.str.3275) unreachable -ok5033: +ok5040: %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 9 store i1 true, ptr %t235 ret void -endif5017: +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 %then5034, label %endif5036 -then5034: + br i1 %t239, label %then5041, label %endif5043 +then5041: %t240 = load ptr, ptr %a1 %t241 = load %S.ast.Node, ptr %a2 %t242 = load ptr, ptr %a1 %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5037, label %ok5038 -panic5037: - call void @finch_panic(ptr @.str.3273, i64 2417, ptr @.str.3274) + br i1 %t243, label %panic5044, label %ok5045 +panic5044: + call void @finch_panic(ptr @.str.3277, i64 2417, ptr @.str.3278) unreachable -ok5038: +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.3272, i64 1, i64 0 }, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.3276, i64 1, i64 0 }, ptr %a248 store { ptr, i64, i64 } %t246, ptr %a249 call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) %t250 = load { ptr, i64, i64 }, ptr %a247 store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3275, i64 14, i64 0 }, ptr %a253 + 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 %panic5039, label %ok5040 -panic5039: - call void @finch_panic(ptr @.str.3276, i64 2417, ptr @.str.3277) + br i1 %t256, label %panic5046, label %ok5047 +panic5046: + call void @finch_panic(ptr @.str.3280, i64 2417, ptr @.str.3281) unreachable -ok5040: +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 @@ -45928,40 +45983,40 @@ ok5040: 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: + br label %endif5043 +endif5043: %t265 = load ptr, ptr %a1 %t266 = load ptr, ptr %a1 %t267 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t268 = load { ptr, i64, i64 }, ptr %t267 %t269 = extractvalue { ptr, i64, i64 } %t268, 1 %t270 = icmp uge i64 0, %t269 - br i1 %t270, label %range5041, label %inrange5042 -range5041: - call void @finch_panic_index(ptr @.str.3278, i64 2419, i64 0, i64 %t269) + br i1 %t270, label %range5048, label %inrange5049 +range5048: + call void @finch_panic_index(ptr @.str.3282, i64 2419, i64 0, i64 %t269) unreachable -inrange5042: +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 %panic5043, label %ok5044 -panic5043: - call void @finch_panic(ptr @.str.3279, i64 2419, ptr @.str.3280) + br i1 %t275, label %panic5050, label %ok5051 +panic5050: + call void @finch_panic(ptr @.str.3283, i64 2419, ptr @.str.3284) unreachable -ok5044: +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 %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3281, i64 2419, ptr @.str.3282) + br i1 %t281, label %panic5052, label %ok5053 +panic5052: + call void @finch_panic(ptr @.str.3285, i64 2419, ptr @.str.3286) unreachable -ok5046: +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 @@ -45969,15 +46024,15 @@ ok5046: %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) + br i1 %t288, label %range5054, label %inrange5055 +range5054: + call void @finch_panic_index(ptr @.str.3287, i64 2419, i64 0, i64 %t287) unreachable -inrange5048: +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.3284, i64 18, i64 0 }) + %t292 = call %S.gen.Val @finch.gen.coerce(ptr %t265, %S.gen.Val %t279, %S.ast.Type %t284, %S.ast.Node %t291, { ptr, i64, i64 } { ptr @.str.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 @@ -45990,31 +46045,31 @@ inrange5048: %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) + br i1 %t304, label %range5056, label %inrange5057 +range5056: + call void @finch_panic_index(ptr @.str.3289, i64 2423, i64 0, i64 %t303) unreachable -inrange5050: +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 %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 + 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 %then5051, label %endif5053 -then5051: + 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 %range5054, label %inrange5055 -range5054: - call void @finch_panic_index(ptr @.str.3287, i64 2424, i64 0, i64 %t316) + br i1 %t317, label %range5061, label %inrange5062 +range5061: + call void @finch_panic_index(ptr @.str.3291, i64 2424, i64 0, i64 %t316) unreachable -inrange5055: +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 @@ -46023,63 +46078,63 @@ inrange5055: 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: + 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.rend5059 -logic.rend5059: - br label %logic.end5058 -logic.end5058: - %t329 = phi i1 [ false, %logic.from5056 ], [ %t328, %logic.rend5059 ] + 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 %endif5053 -endif5053: + br label %endif5060 +endif5060: %t330 = load i1, ptr %a300 %t331 = xor i1 %t330, true - br i1 %t331, label %then5060, label %endif5062 -then5060: + 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 %endif5062 -endif5062: + 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 %panic5063, label %ok5064 -panic5063: - call void @finch_panic(ptr @.str.3288, i64 2431, ptr @.str.3289) + br i1 %t337, label %panic5070, label %ok5071 +panic5070: + call void @finch_panic(ptr @.str.3292, i64 2431, ptr @.str.3293) unreachable -ok5064: +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 %then5065, label %else5066 -then5065: + 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 %panic5068, label %ok5069 -panic5068: - call void @finch_panic(ptr @.str.3291, i64 2432, ptr @.str.3292) + br i1 %t344, label %panic5075, label %ok5076 +panic5075: + call void @finch_panic(ptr @.str.3295, i64 2432, ptr @.str.3296) unreachable -ok5069: +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.3290, i64 12, i64 0 }, ptr %a349 + 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.3293, i64 28, i64 0 }, ptr %a354 + 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) @@ -46088,20 +46143,20 @@ ok5069: %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) + br i1 %t361, label %panic5077, label %ok5078 +panic5077: + call void @finch_panic(ptr @.str.3299, i64 2433, ptr @.str.3300) unreachable -ok5071: +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.3294, i64 12, i64 0 }, ptr %a366 + 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.3297, i64 1, i64 0 }, ptr %a371 + 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 @@ -46110,17 +46165,17 @@ ok5071: 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 + 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 %panic5072, label %ok5073 -panic5072: - call void @finch_panic(ptr @.str.3299, i64 2433, ptr @.str.3300) + br i1 %t384, label %panic5079, label %ok5080 +panic5079: + call void @finch_panic(ptr @.str.3303, i64 2433, ptr @.str.3304) unreachable -ok5073: +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 @@ -46130,7 +46185,7 @@ ok5073: 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 + 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 @@ -46139,7 +46194,7 @@ ok5073: 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 + 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) @@ -46148,20 +46203,20 @@ ok5073: %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) + br i1 %t411, label %panic5081, label %ok5082 +panic5081: + call void @finch_panic(ptr @.str.3308, i64 2434, ptr @.str.3309) unreachable -ok5075: +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.3303, i64 4, i64 0 }, ptr %a416 + 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.3306, i64 1, i64 0 }, ptr %a421 + 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 @@ -46170,27 +46225,27 @@ ok5075: 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: + br label %endif5074 +else5073: %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) + br i1 %t431, label %panic5083, label %ok5084 +panic5083: + call void @finch_panic(ptr @.str.3312, i64 2436, ptr @.str.3313) unreachable -ok5077: +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.3307, i64 4, i64 0 }, ptr %a437 + 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.3310, i64 1, i64 0 }, ptr %a442 + 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 @@ -46199,15 +46254,15 @@ ok5077: 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: + br label %endif5074 +endif5074: %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) + br i1 %t450, label %panic5085, label %ok5086 +panic5085: + call void @finch_panic(ptr @.str.3315, i64 2438, ptr @.str.3316) unreachable -ok5079: +ok5086: %t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9 store i1 true, ptr %t451 ret void @@ -46236,21 +46291,21 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %t4 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 0, %t6 - br i1 %t7, label %range5080, label %inrange5081 -range5080: - call void @finch_panic_index(ptr @.str.3314, i64 2450, i64 0, i64 %t6) + br i1 %t7, label %range5087, label %inrange5088 +range5087: + call void @finch_panic_index(ptr @.str.3318, i64 2450, i64 0, i64 %t6) unreachable -inrange5081: +inrange5088: %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.3317, 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 + 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 @@ -46258,11 +46313,11 @@ inrange5081: %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) + br i1 %t24, label %range5089, label %inrange5090 +range5089: + call void @finch_panic_index(ptr @.str.3320, i64 2450, i64 1, i64 %t23) unreachable -inrange5083: +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 @@ -46272,7 +46327,7 @@ inrange5083: 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 + 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 @@ -46293,12 +46348,12 @@ entry: %t3 = load ptr, ptr %a1 %t4 = load %S.ast.Type, ptr %a2 %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3318, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3322, 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 + 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 @@ -46347,12 +46402,12 @@ entry: %t7 = load ptr, ptr %a1 %t8 = load %S.ast.Type, ptr %a3 %t9 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t7, %S.ast.Type %t8) - store { ptr, i64, i64 } { ptr @.str.3321, i64 23, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3325, 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 + 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 @@ -46361,22 +46416,22 @@ entry: call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.3323, i64 14, i64 0 }, ptr %a25 + 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.3320, i64 3, i64 0 }, { ptr, i64, i64 } %t27) + %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.3324, i64 23, i64 0 }, ptr %a35 + 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.3325, i64 6, i64 0 }, ptr %a40 + 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 @@ -46385,7 +46440,7 @@ entry: call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.3326, i64 6, i64 0 }, ptr %a49 + 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 @@ -46427,12 +46482,12 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load %S.ast.Type, ptr %a3 %t8 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t6, %S.ast.Type %t7) - store { ptr, i64, i64 } { ptr @.str.3327, i64 23, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3331, 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 + 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 @@ -46441,7 +46496,7 @@ entry: call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3329, i64 13, i64 0 }, ptr %a24 + 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 @@ -46495,36 +46550,36 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3330, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3334, 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 %range5091, label %inrange5092 +range5091: + call void @finch_panic_index(ptr @.str.3335, i64 2470, i64 0, i64 %t8) unreachable -inrange5085: +inrange5092: %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.3336, 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: + 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.3334, i64 4, i64 0 }, ptr %a20 + 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.3335, i64 6, i64 0 }, ptr %a25 + 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 @@ -46533,7 +46588,7 @@ endif5088: 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 + 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 @@ -46544,7 +46599,7 @@ endif5088: 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 + 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 @@ -46552,11 +46607,11 @@ endif5088: %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 %t51, label %range5096, label %inrange5097 +range5096: + call void @finch_panic_index(ptr @.str.3342, i64 2473, i64 0, i64 %t50) unreachable -inrange5090: +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 @@ -46566,7 +46621,7 @@ inrange5090: 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 + 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 @@ -46599,12 +46654,12 @@ entry: %t8 = load { ptr, i64, i64 }, ptr %a3 %t9 = load %S.ast.Type, ptr %a4 %t10 = call { ptr, i64, i64 } @finch.gen.mapArgs(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, %S.ast.Type %t9) - store { ptr, i64, i64 } { ptr @.str.3340, i64 25, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3344, 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 + 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) @@ -46628,23 +46683,23 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3342, i64 6, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3346, 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.from5098 +logic.from5098: + br i1 %t9, label %logic.rhs5099, label %logic.end5100 +logic.rhs5099: %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.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: store { ptr, i64, i64 } zeroinitializer, ptr %a14 store { ptr, i64, i64 } zeroinitializer, ptr %a15 %t16 = load ptr, ptr %a1 @@ -46663,7 +46718,7 @@ then5095: call void @finch_str_copy(ptr %a29, ptr %a28) %t30 = load { ptr, i64, i64 }, ptr %a29 ret { ptr, i64, i64 } %t30 -endif5097: +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 @@ -46716,23 +46771,23 @@ entry: %t9 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t7, %S.gen.Val %t8) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3343, i64 3, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3347, 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.3348, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3349, 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.3350, 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 + 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 @@ -46741,7 +46796,7 @@ entry: call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.3348, i64 1, i64 0 }, ptr %a37 + 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) @@ -46753,22 +46808,22 @@ entry: %t45 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t41, { ptr, i64, i64 } %t42, %S.ast.Type %t43, { ptr, i64, i64 } %t44) store { ptr, i64, i64 } %t45, ptr %a46 %t47 = load ptr, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t47, { ptr, i64, i64 } { ptr @.str.3349, i64 7, i64 0 }) + %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.3350, i64 8, i64 0 }) + %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 %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 + %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.3353, i64 3, i64 0 }, ptr %a64 + 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) @@ -46788,29 +46843,29 @@ entry: %t78 = load { ptr, i64, i64 }, ptr %t77 %t79 = extractvalue { ptr, i64, i64 } %t78, 1 %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range5098, label %inrange5099 -range5098: - call void @finch_panic_index(ptr @.str.3354, i64 2501, i64 0, i64 %t79) + br i1 %t80, label %range5105, label %inrange5106 +range5105: + call void @finch_panic_index(ptr @.str.3358, i64 2501, i64 0, i64 %t79) unreachable -inrange5099: +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 %then5100, label %endif5102 -then5100: + 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 %range5103, label %inrange5104 -range5103: - call void @finch_panic_index(ptr @.str.3355, i64 2503, i64 1, i64 %t89) + br i1 %t90, label %range5110, label %inrange5111 +range5110: + call void @finch_panic_index(ptr @.str.3359, i64 2503, i64 1, i64 %t89) unreachable -inrange5104: +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 @@ -46821,11 +46876,11 @@ inrange5104: %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 %range5112, label %inrange5113 +range5112: + call void @finch_panic_index(ptr @.str.3360, i64 2503, i64 1, i64 %t99) unreachable -inrange5106: +inrange5113: %t101 = extractvalue { ptr, i64, i64 } %t98, 0 %t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1 %t103 = load %S.ast.Type, ptr %t102 @@ -46836,11 +46891,11 @@ inrange5106: %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 %range5114, label %inrange5115 +range5114: + call void @finch_panic_index(ptr @.str.3361, i64 2503, i64 1, i64 %t109) unreachable -inrange5108: +inrange5115: %t111 = extractvalue { ptr, i64, i64 } %t108, 0 %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 %t113 = load %S.ast.Type, ptr %t112 @@ -46855,8 +46910,8 @@ inrange5108: %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: + 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) @@ -46944,11 +46999,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 %range5116, label %inrange5117 +range5116: + call void @finch_panic_index(ptr @.str.3362, i64 2512, i64 0, i64 %t8) unreachable -inrange5110: +inrange5117: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -46960,11 +47015,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 %range5118, label %inrange5119 +range5118: + call void @finch_panic_index(ptr @.str.3363, i64 2513, i64 1, i64 %t19) unreachable -inrange5112: +inrange5119: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -46978,11 +47033,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 %range5120, label %inrange5121 +range5120: + call void @finch_panic_index(ptr @.str.3364, i64 2514, i64 1, i64 %t32) unreachable -inrange5114: +inrange5121: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 1 %t36 = load %S.ast.Node, ptr %t35 @@ -46993,29 +47048,29 @@ 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 %range5122, label %inrange5123 +range5122: + call void @finch_panic_index(ptr @.str.3365, i64 2514, i64 1, i64 %t42) unreachable -inrange5116: +inrange5123: %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 }) + %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 %then5117, label %endif5119 -then5117: + 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 %then5120, label %endif5122 -then5120: + 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.3363, i64 44, i64 0 }) - br label %endif5122 -endif5122: + 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 @@ -47038,12 +47093,12 @@ endif5122: %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 +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 %then5123, label %else5124 -then5123: + 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 @@ -47051,15 +47106,15 @@ then5123: 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: + 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 %endif5125 -endif5125: + 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) @@ -47071,20 +47126,20 @@ endif5125: %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 }) + %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.3366, i64 9, i64 0 }) + %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 %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 } { 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.3368, i64 3, i64 0 }, ptr %a114 + 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) @@ -47095,11 +47150,11 @@ endif5125: %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 }) + %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.3370, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3371, i64 15, i64 0 }, { ptr, i64, i64 } %t125) + 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 @@ -47110,32 +47165,32 @@ endif5125: %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) + br i1 %t134, label %panic5133, label %ok5134 +panic5133: + call void @finch_panic(ptr @.str.3377, i64 2537, ptr @.str.3378) unreachable -ok5127: +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 %range5128, label %inrange5129 -range5128: - call void @finch_panic_index(ptr @.str.3375, i64 2537, i64 %t137, i64 %t139) + br i1 %t140, label %range5135, label %inrange5136 +range5135: + call void @finch_panic_index(ptr @.str.3379, i64 2537, i64 %t137, i64 %t139) unreachable -inrange5129: +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.3372, i64 33, i64 0 }, ptr %a146 + 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.3376, i64 6, i64 0 }, ptr %a151 + 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 @@ -47147,7 +47202,7 @@ inrange5129: 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 + 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 @@ -47156,19 +47211,19 @@ inrange5129: 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 + 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.3379, i64 11, i64 0 }) + 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 %panic5130, label %ok5131 -panic5130: - call void @finch_panic(ptr @.str.3380, i64 2539, ptr @.str.3381) + br i1 %t176, label %panic5137, label %ok5138 +panic5137: + call void @finch_panic(ptr @.str.3384, i64 2539, ptr @.str.3385) unreachable -ok5131: +ok5138: %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 9 store i1 true, ptr %t177 %t178 = load ptr, ptr %a1 @@ -47185,8 +47240,8 @@ ok5131: 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: + 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 @@ -47200,7 +47255,7 @@ then5132: %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: +endif5141: %t203 = load ptr, ptr %a1 %t204 = load ptr, ptr %a1 %t205 = load %S.ast.Type, ptr %a27 @@ -47222,20 +47277,20 @@ endif5134: %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: + 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.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: + 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 @@ -47248,8 +47303,8 @@ then5139: %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: + 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 @@ -47325,22 +47380,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.3386, 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 %then5149, label %endif5151 +then5149: %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 %then5152, label %endif5154 +then5152: %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.3387, i64 52, i64 0 }) + br label %endif5154 +endif5154: store i1 true, ptr %a24 store i1 false, ptr %a25 %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 @@ -47348,12 +47403,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.cond5155 +for.cond5155: %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.body5156, label %for.end5158 +for.body5156: %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t34 = load i64, ptr %a30 %t35 = mul i64 2, %t34 @@ -47361,11 +47416,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 %range5159, label %inrange5160 +range5159: + call void @finch_panic_index(ptr @.str.3388, i64 2567, i64 %t36, i64 %t38) unreachable -inrange5153: +inrange5160: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -47376,35 +47431,35 @@ 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.3389, 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.from5161 +logic.from5161: + br i1 %t52, label %logic.rhs5162, label %logic.end5163 +logic.rhs5162: %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.3390, 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.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: %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 %range5168, label %inrange5169 +range5168: + call void @finch_panic_index(ptr @.str.3391, i64 2569, i64 0, i64 %t62) unreachable -inrange5162: +inrange5169: %t64 = extractvalue { ptr, i64, i64 } %t61, 0 %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 %t66 = load %S.ast.Node, ptr %t65 @@ -47412,49 +47467,49 @@ inrange5162: call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) %t69 = load %S.ast.Node, ptr %a68 store %S.ast.Node %t69, ptr %a46 - br label %endif5160 -endif5160: + 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.3388, i64 5, i64 0 }, ptr %a73 + 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 %then5163, label %else5164 -then5163: + br i1 %t75, label %then5170, label %else5171 +then5170: store i1 true, ptr %a25 - br label %endif5165 -else5164: + 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.3389, i64 3, i64 0 }, ptr %a79 + 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 %then5166, label %endif5168 -then5166: + br i1 %t81, label %then5173, label %endif5175 +then5173: store i1 false, ptr %a24 - br label %endif5168 -endif5168: - br label %endif5165 -endif5165: - br label %for.step5150 -for.step5150: + 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.cond5148 -for.end5151: + 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 %range5169, label %inrange5170 -range5169: - call void @finch_panic_index(ptr @.str.3390, i64 2577, i64 0, i64 %t87) + br i1 %t88, label %range5176, label %inrange5177 +range5176: + call void @finch_panic_index(ptr @.str.3394, i64 2577, i64 0, i64 %t87) unreachable -inrange5170: +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 @@ -47465,11 +47520,11 @@ inrange5170: %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) + br i1 %t97, label %range5178, label %inrange5179 +range5178: + call void @finch_panic_index(ptr @.str.3395, i64 2578, i64 1, i64 %t96) unreachable -inrange5172: +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 @@ -47479,84 +47534,84 @@ inrange5172: %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 + 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.from5173 -logic.from5173: - br i1 %t108, label %logic.end5175, label %logic.rhs5174 -logic.rhs5174: + 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.3393, i64 4, i64 0 }, ptr %a113 + 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.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: + 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 %range5180, label %inrange5181 -range5180: - call void @finch_panic_index(ptr @.str.3394, i64 2580, i64 0, i64 %t120) + br i1 %t121, label %range5187, label %inrange5188 +range5187: + call void @finch_panic_index(ptr @.str.3398, i64 2580, i64 0, i64 %t120) unreachable -inrange5181: +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.3395, i64 35, i64 0 }) - br label %endif5179 -endif5179: + 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.3396, i64 4, i64 0 }, ptr %a129 + 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.from5182 -logic.from5182: - br i1 %t131, label %logic.end5184, label %logic.rhs5183 -logic.rhs5183: + 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.3397, i64 4, i64 0 }, ptr %a136 + 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.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: + 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 %range5189, label %inrange5190 -range5189: - call void @finch_panic_index(ptr @.str.3398, i64 2583, i64 1, i64 %t143) + br i1 %t144, label %range5196, label %inrange5197 +range5196: + call void @finch_panic_index(ptr @.str.3402, i64 2583, i64 1, i64 %t143) unreachable -inrange5190: +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.3399, i64 37, i64 0 }) - br label %endif5188 -endif5188: + 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 @@ -47564,30 +47619,30 @@ endif5188: %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: + 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.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 }) + 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 %endif5197 -endif5197: + 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 %endif5144 -endif5144: + br label %endif5151 +endif5151: %t162 = load ptr, ptr %a1 %t163 = load ptr, ptr %a1 %t164 = load %S.ast.Type, ptr %a8 @@ -47599,18 +47654,18 @@ endif5144: %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) + 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.cond5198 -for.cond5198: + br label %for.cond5205 +for.cond5205: %t178 = load i64, ptr %a177 %t179 = icmp slt i64 %t178, %t176 - br i1 %t179, label %for.body5199, label %for.end5201 -for.body5199: + 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) @@ -47623,19 +47678,19 @@ for.body5199: 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: + 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.rend5205 -logic.rend5205: - br label %logic.end5204 -logic.end5204: - %t193 = phi i1 [ false, %logic.from5202 ], [ %t192, %logic.rend5205 ] + 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 %then5206, label %endif5208 -then5206: + 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 @@ -47643,11 +47698,11 @@ then5206: %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) + br i1 %t201, label %range5216, label %inrange5217 +range5216: + call void @finch_panic_index(ptr @.str.3406, i64 2598, i64 %t198, i64 %t200) unreachable -inrange5210: +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 @@ -47655,11 +47710,11 @@ inrange5210: %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) + br i1 %t208, label %range5218, label %inrange5219 +range5218: + call void @finch_panic_index(ptr @.str.3407, i64 2598, i64 0, i64 %t207) unreachable -inrange5212: +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 @@ -47673,11 +47728,11 @@ inrange5212: %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) + br i1 %t220, label %range5220, label %inrange5221 +range5220: + call void @finch_panic_index(ptr @.str.3408, i64 2599, i64 %t217, i64 %t219) unreachable -inrange5214: +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 @@ -47685,29 +47740,29 @@ inrange5214: %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) + br i1 %t227, label %range5222, label %inrange5223 +range5222: + call void @finch_panic_index(ptr @.str.3409, i64 2599, i64 1, i64 %t226) unreachable -inrange5216: +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 %endif5208 -endif5208: + 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3406, i64 2601, i64 0, i64 %t236) + br i1 %t237, label %range5224, label %inrange5225 +range5224: + call void @finch_panic_index(ptr @.str.3410, i64 2601, i64 0, i64 %t236) unreachable -inrange5218: +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 @@ -47717,15 +47772,15 @@ inrange5218: %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) + br i1 %t246, label %range5226, label %inrange5227 +range5226: + call void @finch_panic_index(ptr @.str.3411, i64 2601, i64 %t243, i64 %t245) unreachable -inrange5220: +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.3408, i64 21, i64 0 }) + %t250 = call %S.gen.Val @finch.gen.coerce(ptr %t232, %S.gen.Val %t233, %S.ast.Type %t240, %S.ast.Node %t249, { ptr, i64, i64 } { ptr @.str.3412, i64 21, i64 0 }) store %S.gen.Val %t250, ptr %a184 %t251 = load ptr, ptr %a1 %t252 = load %S.gen.Val, ptr %a189 @@ -47733,11 +47788,11 @@ inrange5220: %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) + br i1 %t256, label %range5228, label %inrange5229 +range5228: + call void @finch_panic_index(ptr @.str.3413, i64 2602, i64 1, i64 %t255) unreachable -inrange5222: +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 @@ -47748,15 +47803,15 @@ inrange5222: %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) + br i1 %t266, label %range5230, label %inrange5231 +range5230: + call void @finch_panic_index(ptr @.str.3414, i64 2602, i64 %t263, i64 %t265) unreachable -inrange5224: +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.3411, i64 23, i64 0 }) + %t270 = call %S.gen.Val @finch.gen.coerce(ptr %t251, %S.gen.Val %t252, %S.ast.Type %t259, %S.ast.Node %t269, { ptr, i64, i64 } { ptr @.str.3415, i64 23, i64 0 }) store %S.gen.Val %t270, ptr %a189 %t271 = load ptr, ptr %a1 %t272 = load %S.gen.Val, ptr %a189 @@ -47775,11 +47830,11 @@ inrange5224: %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) + br i1 %t287, label %range5232, label %inrange5233 +range5232: + call void @finch_panic_index(ptr @.str.3416, i64 2605, i64 1, i64 %t286) unreachable -inrange5226: +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 @@ -47790,13 +47845,13 @@ inrange5226: %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: + br label %for.step5207 +for.step5207: %t297 = load i64, ptr %a177 %t298 = add i64 %t297, 1 store i64 %t298, ptr %a177 - br label %for.cond5198 -for.end5201: + br label %for.cond5205 +for.end5208: %t299 = load ptr, ptr %a1 %t300 = load ptr, ptr %a1 %t301 = load %S.ast.Type, ptr %a8 @@ -48034,11 +48089,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 %range5234, label %inrange5235 +range5234: + call void @finch_panic_index(ptr @.str.3417, i64 2612, i64 0, i64 %t13) unreachable -inrange5228: +inrange5235: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -48050,11 +48105,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 %range5236, label %inrange5237 +range5236: + call void @finch_panic_index(ptr @.str.3418, i64 2613, i64 1, i64 %t24) unreachable -inrange5230: +inrange5237: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds %S.ast.Type, ptr %t26, i64 1 %t28 = load %S.ast.Type, ptr %t27 @@ -48064,69 +48119,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.3419, 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.from5238 +logic.from5238: + br i1 %t37, label %logic.end5240, label %logic.rhs5239 +logic.rhs5239: %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.3420, 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.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: %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.3421, 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.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: %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.3422, 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 %then5249, label %else5250 +then5249: %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 %endif5251 +else5250: %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 %endif5251 +endif5251: %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 %range5252, label %inrange5253 +range5252: + call void @finch_panic_index(ptr @.str.3423, i64 2620, i64 1, i64 %t65) unreachable -inrange5246: +inrange5253: %t67 = extractvalue { ptr, i64, i64 } %t64, 0 %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 1 %t69 = load %S.ast.Node, ptr %t68 @@ -48137,15 +48192,15 @@ 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 %range5254, label %inrange5255 +range5254: + call void @finch_panic_index(ptr @.str.3424, i64 2620, i64 1, i64 %t75) unreachable -inrange5248: +inrange5255: %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 }) + %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 @@ -48157,44 +48212,44 @@ inrange5248: 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 } { 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.3423, i64 3, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3427, i64 3, i64 0 }, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 %t100 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t99) store { ptr, i64, i64 } %t100, ptr %a101 %t102 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3424, i64 3, i64 0 }, ptr %a104 + 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 %then5249, label %endif5251 -then5249: + 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.3425, i64 4, i64 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 -endif5251: +endif5258: %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 + 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 %then5252, label %endif5254 -then5252: + 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.3427, i64 10, i64 0 }) + %t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3431, i64 10, i64 0 }) store { ptr, i64, i64 } %t120, ptr %a121 %t122 = load ptr, ptr %a1 - %t123 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t122, { ptr, i64, i64 } { ptr @.str.3428, i64 10, i64 0 }) + %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 %t125 = load ptr, ptr %a1 %t126 = load { ptr, i64, i64 }, ptr %a101 @@ -48206,12 +48261,12 @@ then5252: call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) %t131 = load ptr, ptr %a1 %t132 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3429, i64 35, i64 0 }, ptr %a134 + 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.3430, i64 6, i64 0 }, ptr %a139 + 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 @@ -48220,7 +48275,7 @@ then5252: call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) %t145 = load { ptr, i64, i64 }, ptr %a142 store { ptr, i64, i64 } %t145, ptr %a147 - store { ptr, i64, i64 } { ptr @.str.3431, i64 6, i64 0 }, ptr %a148 + 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 %t150 = load ptr, ptr %a1 @@ -48231,7 +48286,7 @@ then5252: 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 + 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) @@ -48246,24 +48301,24 @@ then5252: 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 }) + %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 -endif5254: +endif5261: %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 }) + %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.3435, i64 11, i64 0 }) + %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.3436, i64 8, i64 0 }) + %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.3437, i64 8, i64 0 }) + %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.3438, i64 7, i64 0 }) + %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 @@ -48309,11 +48364,11 @@ endif5254: %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) + br i1 %t224, label %range5262, label %inrange5263 +range5262: + call void @finch_panic_index(ptr @.str.3443, i64 2649, i64 2, i64 %t223) unreachable -inrange5256: +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 @@ -48324,15 +48379,15 @@ inrange5256: %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) + br i1 %t234, label %range5264, label %inrange5265 +range5264: + call void @finch_panic_index(ptr @.str.3444, i64 2649, i64 2, i64 %t233) unreachable -inrange5258: +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.3441, i64 11, i64 0 }) + %t238 = call %S.gen.Val @finch.gen.coerce(ptr %t219, %S.gen.Val %t229, %S.ast.Type %t230, %S.ast.Node %t237, { ptr, i64, i64 } { ptr @.str.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 @@ -48351,12 +48406,12 @@ inrange5258: %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 } { 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.3443, i64 3, i64 0 }, ptr %a259 + 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 @@ -48365,7 +48420,7 @@ inrange5258: 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 + 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 @@ -48374,7 +48429,7 @@ inrange5258: 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 + 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 @@ -48383,7 +48438,7 @@ inrange5258: 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 + 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 @@ -48392,7 +48447,7 @@ inrange5258: 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 + 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) @@ -48407,54 +48462,54 @@ inrange5258: %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: +endif5248: %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 + 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 %then5259, label %endif5261 -then5259: + 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.3449, i64 31, i64 0 }, ptr %a319 + 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.3450, i64 1, i64 0 }, ptr %a324 + 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.3451, i64 4, i64 0 }) + %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 -endif5261: +endif5268: %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 + 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.from5262 -logic.from5262: - br i1 %t332, label %logic.end5264, label %logic.rhs5263 -logic.rhs5263: + 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.3453, i64 6, i64 0 }, ptr %a335 + 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.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: + 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 @@ -48467,39 +48522,39 @@ then5266: 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 + 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 %then5269, label %endif5271 -then5269: + 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 %endif5271 -endif5271: + 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.3455, i64 17, i64 0 }) + %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.3456, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3457, i64 15, i64 0 }, { ptr, i64, i64 } %t364) + 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.3459, i64 23, i64 0 }, ptr %a371 + 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.3460, i64 6, i64 0 }, ptr %a376 + 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 @@ -48508,20 +48563,20 @@ endif5271: 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 + 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.3458, i64 3, i64 0 }, { ptr, i64, i64 } %t387) + %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.3462, i64 30, i64 0 }, ptr %a393 + 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.3463, i64 6, i64 0 }, ptr %a398 + 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 @@ -48530,7 +48585,7 @@ endif5271: 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 + 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 @@ -48541,31 +48596,31 @@ endif5271: 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 + 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.3466, i64 3, i64 0 }, { ptr, i64, i64 } %t421) + %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.3467, i64 3, i64 0 }) + %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.3468, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3469, i64 1, i64 0 }, { ptr, i64, i64 } %t428) + 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.3471, i64 23, i64 0 }, ptr %a435 + 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.3472, i64 6, i64 0 }, ptr %a440 + 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 @@ -48574,11 +48629,11 @@ endif5271: 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 + 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.3470, i64 3, i64 0 }, { ptr, i64, i64 } %t451) + %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 @@ -48590,21 +48645,21 @@ endif5271: %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) + br i1 %t463, label %range5279, label %inrange5280 +range5279: + call void @finch_panic_index(ptr @.str.3478, i64 2679, i64 3, i64 %t462) unreachable -inrange5273: +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 %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 }) + %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.3476, i64 10, i64 0 }) + %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 @@ -48613,13 +48668,13 @@ inrange5273: %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 + %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.3479, i64 3, i64 0 }, ptr %a489 + 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) @@ -48631,19 +48686,19 @@ inrange5273: call void @finch.gen.label(ptr %t494, { ptr, i64, i64 } %t495) %t496 = load ptr, ptr %a1 %t497 = load { ptr, i64, i64 }, ptr %a426 - %t498 = call { ptr, i64, i64 } @finch.gen.load(ptr %t496, { ptr, i64, i64 } { ptr @.str.3480, i64 3, i64 0 }, { ptr, i64, i64 } %t497) + %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.3481, i64 23, i64 0 }, ptr %a506 + 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.3482, i64 6, i64 0 }, ptr %a511 + 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 @@ -48652,7 +48707,7 @@ inrange5273: 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 + 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 @@ -48671,17 +48726,17 @@ inrange5273: %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 } { 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.3486, i64 3, i64 0 }, ptr %a543 + 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.3484, i64 3, i64 0 }, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t546) + 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) @@ -48693,7 +48748,7 @@ inrange5273: 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) + %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 @@ -48702,16 +48757,16 @@ inrange5273: %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: +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.3488, i64 21, i64 0 }, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.3492, i64 21, i64 0 }, ptr %a567 store { ptr, i64, i64 } %t565, ptr %a568 call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) %t569 = load { ptr, i64, i64 }, ptr %a566 store { ptr, i64, i64 } %t569, ptr %a571 - store { ptr, i64, i64 } { ptr @.str.3489, i64 49, i64 0 }, ptr %a572 + 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) @@ -48764,47 +48819,47 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3490, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3494, 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.from5281 +logic.from5281: + br i1 %t9, label %logic.rhs5282, label %logic.end5283 +logic.rhs5282: %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.3495, 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.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: %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.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: %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 %panic5292, label %ok5293 +panic5292: + call void @finch_panic(ptr @.str.3496, i64 2701, ptr @.str.3497) unreachable -ok5286: +ok5293: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20 %t26 = load ptr, ptr %a1 %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 @@ -48815,11 +48870,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 %range5294, label %inrange5295 +range5294: + call void @finch_panic_index(ptr @.str.3498, i64 2701, i64 %t31, i64 %t33) unreachable -inrange5288: +inrange5295: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 %t37 = load %S.gen.EnumDef, ptr %t36 @@ -48835,43 +48890,43 @@ 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.cond5296 +find.cond5296: %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.body5297, label %find.end5300 +find.body5297: %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.hit5298, label %find.next5299 +find.hit5298: store i64 %t50, ptr %a46 - br label %find.end5293 -find.next5292: + br label %find.end5300 +find.next5299: %t58 = add i64 %t50, 1 store i64 %t58, ptr %a49 - br label %find.cond5289 -find.end5293: + br label %find.cond5296 +find.end5300: %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 %then5301, label %endif5303 +then5301: %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.3499, 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.3500, 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 @@ -48881,12 +48936,12 @@ then5294: 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 + 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.3498, i64 2, i64 0 }, ptr %a87 + 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 @@ -48894,22 +48949,22 @@ then5294: 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 + 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 %endif5296 -endif5296: + 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 %range5297, label %inrange5298 -range5297: - call void @finch_panic_index(ptr @.str.3500, i64 2706, i64 %t99, i64 %t101) + br i1 %t102, label %range5304, label %inrange5305 +range5304: + call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t99, i64 %t101) unreachable -inrange5298: +inrange5305: %t103 = extractvalue { ptr, i64, i64 } %t100, 0 %t104 = getelementptr inbounds i64, ptr %t103, i64 %t99 %t105 = load i64, ptr %t104 @@ -48922,7 +48977,7 @@ inrange5298: %t112 = load %S.ast.Type, ptr %a111 %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif5284: +endif5291: %t114 = load ptr, ptr %a1 %t115 = load ptr, ptr %a1 %t116 = load %S.ast.Node, ptr %a2 @@ -48930,7 +48985,7 @@ endif5284: %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 }) + %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 } @@ -49043,11 +49098,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 %range5306, label %inrange5307 +range5306: + call void @finch_panic_index(ptr @.str.3506, i64 2714, i64 0, i64 %t7) unreachable -inrange5300: +inrange5307: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -49062,51 +49117,51 @@ 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.3507, 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.from5308 +logic.from5308: + br i1 %t25, label %logic.end5310, label %logic.rhs5309 +logic.rhs5309: %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.3508, 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.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: %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 %range5315, label %inrange5316 +range5315: + call void @finch_panic_index(ptr @.str.3509, i64 2717, i64 0, i64 %t36) unreachable -inrange5309: +inrange5316: %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.3510, i64 30, i64 0 }) + br label %endif5314 +endif5314: %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 }) + %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.3508, i64 4, i64 0 }) + %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 @@ -49115,23 +49170,23 @@ endif5307: store i64 %t54, ptr %a55 %t56 = load i64, ptr %a55 store i64 0, ptr %a57 - br label %for.cond5310 -for.cond5310: + br label %for.cond5317 +for.cond5317: %t58 = load i64, ptr %a57 %t59 = icmp slt i64 %t58, %t56 - br i1 %t59, label %for.body5311, label %for.end5313 -for.body5311: + 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 %range5314, label %inrange5315 -range5314: - call void @finch_panic_index(ptr @.str.3509, i64 2728, i64 %t62, i64 %t64) + br i1 %t65, label %range5321, label %inrange5322 +range5321: + call void @finch_panic_index(ptr @.str.3513, i64 2728, i64 %t62, i64 %t64) unreachable -inrange5315: +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 @@ -49140,38 +49195,38 @@ inrange5315: %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: + 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.3510, i64 72, i64 0 }) - br label %endif5318 -endif5318: + 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.3511, i64 9, i64 0 }) + %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.3512, i64 10, i64 0 }) + %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 %then5319, label %else5320 -then5319: + br i1 %t83, label %then5326, label %else5327 +then5326: store i1 true, ptr %a44 %t84 = load ptr, ptr %a1 %t85 = load { ptr, i64, i64 }, ptr %a78 call void @finch.gen.br(ptr %t84, { ptr, i64, i64 } %t85) - br label %endif5321 -else5320: + 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 %range5322, label %inrange5323 -range5322: - call void @finch_panic_index(ptr @.str.3513, i64 2738, i64 0, i64 %t88) + br i1 %t89, label %range5329, label %inrange5330 +range5329: + call void @finch_panic_index(ptr @.str.3517, i64 2738, i64 0, i64 %t88) unreachable -inrange5323: +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 @@ -49183,22 +49238,22 @@ inrange5323: %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: + br label %for.cond5331 +for.cond5331: %t101 = load i64, ptr %a100 %t102 = icmp slt i64 %t101, %t99 - br i1 %t102, label %for.body5325, label %for.end5327 -for.body5325: + 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 %range5328, label %inrange5329 -range5328: - call void @finch_panic_index(ptr @.str.3514, i64 2740, i64 %t104, i64 %t106) + br i1 %t107, label %range5335, label %inrange5336 +range5335: + call void @finch_panic_index(ptr @.str.3518, i64 2740, i64 %t104, i64 %t106) unreachable -inrange5329: +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 @@ -49212,62 +49267,62 @@ inrange5329: %t118 = load i64, ptr %t114 %t119 = load ptr, ptr %a46 store i64 0, ptr %a120 - br label %find.cond5330 -find.cond5330: + br label %find.cond5337 +find.cond5337: %t121 = load i64, ptr %a120 %t122 = icmp slt i64 %t121, %t118 - br i1 %t122, label %find.body5331, label %find.end5334 -find.body5331: + br i1 %t122, label %find.body5338, label %find.end5341 +find.body5338: %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i64 %t121 %t124 = load { ptr, i64, i64 }, ptr %t123 store { ptr, i64, i64 } %t124, ptr %a125 store { ptr, i64, i64 } %t116, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %find.hit5332, label %find.next5333 -find.hit5332: + br i1 %t128, label %find.hit5339, label %find.next5340 +find.hit5339: store i64 %t121, ptr %a117 - br label %find.end5334 -find.next5333: + br label %find.end5341 +find.next5340: %t129 = add i64 %t121, 1 store i64 %t129, ptr %a120 - br label %find.cond5330 -find.end5334: + br label %find.cond5337 +find.end5341: %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: + 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.3515, i64 4, i64 0 }, ptr %a135 + 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.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: + 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 %range5342, label %inrange5343 -range5342: - call void @finch_panic_index(ptr @.str.3516, i64 2742, i64 %t140, i64 %t142) + br i1 %t143, label %range5349, label %inrange5350 +range5349: + call void @finch_panic_index(ptr @.str.3520, i64 2742, i64 %t140, i64 %t142) unreachable -inrange5343: +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.3517, i64 49, i64 0 }) - br label %endif5341 -endif5341: + 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 @@ -49288,33 +49343,33 @@ endif5341: %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) + br i1 %t163, label %range5351, label %inrange5352 +range5351: + call void @finch_panic_index(ptr @.str.3523, i64 2745, i64 %t160, i64 %t162) unreachable -inrange5345: +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.3518, i64 2, i64 0 }, %S.gen.Val %t158, %S.gen.Val %t159, %S.ast.Node %t166) + %t167 = call %S.gen.Val @finch.gen.compare(ptr %t157, { ptr, i64, i64 } { ptr @.str.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 %then5346, label %else5347 -then5346: + 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 %endif5348 -else5347: + br label %endif5355 +else5354: %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 }) + %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 %t182 = load ptr, ptr %a1 %t183 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0 @@ -49325,17 +49380,17 @@ else5347: %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: + 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.cond5324 -for.end5327: - br label %endif5321 -endif5321: + 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) @@ -49343,11 +49398,11 @@ endif5321: %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) + br i1 %t196, label %range5356, label %inrange5357 +range5356: + call void @finch_panic_index(ptr @.str.3525, i64 2756, i64 1, i64 %t195) unreachable -inrange5350: +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 @@ -49356,81 +49411,81 @@ inrange5350: %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: + 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.from5354 -logic.from5354: - br i1 %t210, label %logic.end5356, label %logic.rhs5355 -logic.rhs5355: + 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.3522, i64 4, i64 0 }, ptr %a214 + 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.rend5357 -logic.rend5357: - br label %logic.end5356 -logic.end5356: - %t217 = phi i1 [ true, %logic.from5354 ], [ %t216, %logic.rend5357 ] - br i1 %t217, label %then5358, label %endif5360 -then5358: - %t218 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i32 0, i32 0 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3523, i64 4, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.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 + %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 + %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 + %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.3525, i64 52, i64 0 }) - br label %endif5367 -endif5367: + 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 %endif5360 -endif5360: + 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.3526, i64 57, i64 0 }) + %t244 = call %S.gen.Val @finch.gen.coerce(ptr %t240, %S.gen.Val %t241, %S.ast.Type %t242, %S.ast.Node %t243, { ptr, i64, i64 } { ptr @.str.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.3527, i64 10, i64 0 }) + %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 @@ -49466,82 +49521,82 @@ endif5360: %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: + 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.3528, i64 5, i64 0 }, ptr %a279 + 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 %then5368, label %else5369 -then5368: + 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 %endif5370 -else5369: + 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 %endif5370 -endif5370: + br label %endif5377 +endif5377: %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) + br i1 %t287, label %panic5378, label %ok5379 +panic5378: + call void @finch_panic(ptr @.str.3533, i64 2780, ptr @.str.3534) unreachable -ok5372: +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 %then5373, label %endif5375 -then5373: + br i1 %t290, label %then5380, label %endif5382 +then5380: store i1 true, ptr %a45 - br label %endif5375 -endif5375: + 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 %endif5353 -endif5353: + 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 %then5376, label %endif5378 -then5376: + br i1 %t295, label %then5383, label %endif5385 +then5383: %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: + 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.cond5310 -for.end5313: + br label %for.cond5317 +for.end5320: %t300 = load i1, ptr %a44 %t301 = xor i1 %t300, true - br i1 %t301, label %then5379, label %endif5381 -then5379: + 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.3531, i64 4, i64 0 }, ptr %a305 + 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 %then5382, label %else5383 -then5382: + br i1 %t307, label %then5389, label %else5390 +then5389: %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) + br i1 %t309, label %panic5392, label %ok5393 +panic5392: + call void @finch_panic(ptr @.str.3536, i64 2791, ptr @.str.3537) unreachable -ok5386: +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 @@ -49552,11 +49607,11 @@ ok5386: %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) + br i1 %t319, label %range5394, label %inrange5395 +range5394: + call void @finch_panic_index(ptr @.str.3538, i64 2791, i64 %t316, i64 %t318) unreachable -inrange5388: +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 @@ -49569,23 +49624,23 @@ inrange5388: %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: + br label %for.cond5396 +for.cond5396: %t332 = load i64, ptr %a331 %t333 = icmp slt i64 %t332, %t330 - br i1 %t333, label %for.body5390, label %for.end5392 -for.body5390: + 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 %range5393, label %inrange5394 -range5393: - call void @finch_panic_index(ptr @.str.3535, i64 2794, i64 %t336, i64 %t338) + br i1 %t339, label %range5400, label %inrange5401 +range5400: + call void @finch_panic_index(ptr @.str.3539, i64 2794, i64 %t336, i64 %t338) unreachable -inrange5394: +inrange5401: %t340 = extractvalue { ptr, i64, i64 } %t337, 0 %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 %t342 = load i64, ptr %t341 @@ -49595,43 +49650,43 @@ inrange5394: %t346 = load i64, ptr %t334 %t347 = load ptr, ptr %a46 store i64 0, ptr %a348 - br label %find.cond5395 -find.cond5395: + br label %find.cond5402 +find.cond5402: %t349 = load i64, ptr %a348 %t350 = icmp slt i64 %t349, %t346 - br i1 %t350, label %find.body5396, label %find.end5399 -find.body5396: + 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.hit5397, label %find.next5398 -find.hit5397: + br i1 %t356, label %find.hit5404, label %find.next5405 +find.hit5404: store i64 %t349, ptr %a345 - br label %find.end5399 -find.next5398: + br label %find.end5406 +find.next5405: %t357 = add i64 %t349, 1 store i64 %t357, ptr %a348 - br label %find.cond5395 -find.end5399: + 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 %then5400, label %endif5402 -then5400: + 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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3536, i64 2795, i64 %t363, i64 %t365) + br i1 %t366, label %range5410, label %inrange5411 +range5410: + call void @finch_panic_index(ptr @.str.3540, i64 2795, i64 %t363, i64 %t365) unreachable -inrange5404: +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 @@ -49645,105 +49700,105 @@ inrange5404: %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: + 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.cond5389 -for.end5392: + 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 %then5405, label %endif5407 -then5405: + 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.3538, i64 2, i64 0 }, ptr %a385 + 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.3537, i64 26, i64 0 }, ptr %a389 + 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.3539, i64 29, i64 0 }, ptr %a394 + 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 %endif5407 -endif5407: - br label %endif5384 -else5383: + 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.3540, i64 11, i64 0 }, ptr %a401 + 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.3541, i64 54, i64 0 }, ptr %a406 + 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 %endif5384 -endif5384: + 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.3542, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3543, i64 35, i64 0 }, %S.ast.Node %t409) + 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.3544, i64 11, i64 0 }) + 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 %panic5408, label %ok5409 -panic5408: - call void @finch_panic(ptr @.str.3545, i64 2807, ptr @.str.3546) + br i1 %t412, label %panic5415, label %ok5416 +panic5415: + call void @finch_panic(ptr @.str.3549, i64 2807, ptr @.str.3550) unreachable -ok5409: +ok5416: %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 9 store i1 true, ptr %t413 - br label %endif5381 -endif5381: + 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 %then5410, label %endif5412 -then5410: + 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.3547, i64 11, i64 0 }) + 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 %panic5413, label %ok5414 -panic5413: - call void @finch_panic(ptr @.str.3548, i64 2812, ptr @.str.3549) + br i1 %t420, label %panic5420, label %ok5421 +panic5420: + call void @finch_panic(ptr @.str.3552, i64 2812, ptr @.str.3553) unreachable -ok5414: +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.3550, i64 4, i64 0 }) + %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 -endif5412: +endif5419: %t424 = load i1, ptr %a3 - br i1 %t424, label %then5415, label %endif5417 -then5415: + 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.3551, i64 4, i64 0 }, ptr %a430 + 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.3552, i64 1, i64 0 }, ptr %a435 + 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 @@ -49765,8 +49820,8 @@ then5415: %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 }) +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 } @@ -49797,42 +49852,42 @@ entry: %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t5 = load i64, ptr %t4 store i64 0, ptr %a6 - br label %for.cond5418 -for.cond5418: + br label %for.cond5425 +for.cond5425: %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.body5426, label %for.end5428 +for.body5426: %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 %range5429, label %inrange5430 +range5429: + call void @finch_panic_index(ptr @.str.3559, i64 2824, i64 %t10, i64 %t12) unreachable -inrange5423: +inrange5430: %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.3558, 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.3560, 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) + br i1 %t28, label %range5431, label %inrange5432 +range5431: + call void @finch_panic_index(ptr @.str.3561, i64 2824, i64 %t25, i64 %t27) unreachable -inrange5425: +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 @@ -49841,7 +49896,7 @@ inrange5425: 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 + 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 @@ -49851,15 +49906,15 @@ inrange5425: %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: + br label %for.step5427 +for.step5427: %t44 = load i64, ptr %a6 %t45 = add i64 %t44, 1 store i64 %t45, ptr %a6 - br label %for.cond5418 -for.end5421: + br label %for.cond5425 +for.end5428: %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 + 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 @@ -49920,38 +49975,38 @@ 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.3560, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.3564, 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.from5433 +logic.from5433: + br i1 %t8, label %logic.rhs5434, label %logic.end5435 +logic.rhs5434: %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.3565, 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.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: %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.3566, i64 80, i64 0 }) + br label %endif5439 +endif5439: %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 %panic5440, label %ok5441 +panic5440: + call void @finch_panic(ptr @.str.3567, i64 2842, ptr @.str.3568) unreachable -ok5434: +ok5441: %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 39 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 @@ -49960,11 +50015,11 @@ 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 %panic5442, label %ok5443 +panic5442: + call void @finch_panic(ptr @.str.3569, i64 2843, ptr @.str.3570) unreachable -ok5436: +ok5443: %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 40 %t29 = load { ptr, i64, i64 }, ptr %t28 store { ptr, i64, i64 } %t29, ptr %a30 @@ -49973,11 +50028,11 @@ 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 %panic5444, label %ok5445 +panic5444: + call void @finch_panic(ptr @.str.3571, i64 2844, ptr @.str.3572) unreachable -ok5438: +ok5445: %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 41 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 @@ -49988,31 +50043,31 @@ 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 %panic5446, label %ok5447 +panic5446: + call void @finch_panic(ptr @.str.3573, i64 2845, ptr @.str.3574) unreachable -ok5440: +ok5447: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 39 store { ptr, i64, i64 } %t43, ptr %t46 %t47 = load ptr, ptr %a1 %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3572, i64 2846, ptr @.str.3573) + br i1 %t48, label %panic5448, label %ok5449 +panic5448: + call void @finch_panic(ptr @.str.3576, i64 2846, ptr @.str.3577) unreachable -ok5442: +ok5449: %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 + 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 %panic5443, label %ok5444 -panic5443: - call void @finch_panic(ptr @.str.3575, i64 2847, ptr @.str.3576) + br i1 %t51, label %panic5450, label %ok5451 +panic5450: + call void @finch_panic(ptr @.str.3579, i64 2847, ptr @.str.3580) unreachable -ok5444: +ok5451: %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 + 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) @@ -50024,11 +50079,11 @@ ok5444: %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) + br i1 %t63, label %panic5452, label %ok5453 +panic5452: + call void @finch_panic(ptr @.str.3581, i64 2849, ptr @.str.3582) unreachable -ok5446: +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 @@ -50037,11 +50092,11 @@ ok5446: %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) + br i1 %t71, label %panic5454, label %ok5455 +panic5454: + call void @finch_panic(ptr @.str.3583, i64 2849, ptr @.str.3584) unreachable -ok5448: +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 @@ -50052,11 +50107,11 @@ ok5448: %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) + br i1 %t81, label %panic5456, label %ok5457 +panic5456: + call void @finch_panic(ptr @.str.3585, i64 2850, ptr @.str.3586) unreachable -ok5450: +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) @@ -50065,11 +50120,11 @@ ok5450: %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) + br i1 %t88, label %panic5458, label %ok5459 +panic5458: + call void @finch_panic(ptr @.str.3587, i64 2851, ptr @.str.3588) unreachable -ok5452: +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) @@ -50078,11 +50133,11 @@ ok5452: %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) + br i1 %t95, label %panic5460, label %ok5461 +panic5460: + call void @finch_panic(ptr @.str.3589, i64 2852, ptr @.str.3590) unreachable -ok5454: +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) @@ -50092,13 +50147,13 @@ ok5454: %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: + br i1 %t103, label %then5462, label %endif5464 +then5462: %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: + 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) @@ -50158,88 +50213,88 @@ entry: 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 %panic5465, label %ok5466 +panic5465: + call void @finch_panic(ptr @.str.3592, i64 2861, ptr @.str.3593) unreachable -ok5459: +ok5466: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5460, label %endif5462 -then5460: + br i1 %t7, label %then5467, label %endif5469 +then5467: %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.3594, i64 30, i64 0 }) + br label %endif5469 +endif5469: %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 %panic5470, label %ok5471 +panic5470: + call void @finch_panic(ptr @.str.3595, i64 2864, ptr @.str.3596) unreachable -ok5464: +ok5471: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12 %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 %t14 = load i1, ptr %t13 %t15 = xor i1 %t14, true - br i1 %t15, label %then5465, label %endif5467 -then5465: - store { ptr, i64, i64 } { ptr @.str.3593, i64 1, i64 0 }, ptr %a16 + br i1 %t15, label %then5472, label %endif5474 +then5472: + store { ptr, i64, i64 } { ptr @.str.3597, 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 %panic5475, label %ok5476 +panic5475: + call void @finch_panic(ptr @.str.3598, i64 2866, ptr @.str.3599) unreachable -ok5469: +ok5476: %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12 %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3596, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3600, 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 %then5477, label %endif5479 +then5477: %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 %panic5480, label %ok5481 +panic5480: + call void @finch_panic(ptr @.str.3601, i64 2867, ptr @.str.3602) unreachable -ok5474: +ok5481: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12 %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 %t31 = load %S.ast.Type, ptr %t30 %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3599, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3603, 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: + 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 %panic5475, label %ok5476 -panic5475: - call void @finch_panic(ptr @.str.3601, i64 2869, ptr @.str.3602) + br i1 %t40, label %panic5482, label %ok5483 +panic5482: + call void @finch_panic(ptr @.str.3605, i64 2869, ptr @.str.3606) unreachable -ok5476: +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.3600, i64 29, i64 0 }, ptr %a45 + 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.3603, i64 31, i64 0 }, ptr %a50 + 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 @@ -50248,32 +50303,32 @@ ok5476: 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 + store { ptr, i64, i64 } { ptr @.str.3608, i64 55, i64 0 }, ptr %a59 call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) %t60 = load { ptr, i64, i64 }, ptr %a57 call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } %t60) - br label %endif5467 -endif5467: + 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 %range5477, label %inrange5478 -range5477: - call void @finch_panic_index(ptr @.str.3605, i64 2871, i64 0, i64 %t64) + br i1 %t65, label %range5484, label %inrange5485 +range5484: + call void @finch_panic_index(ptr @.str.3609, i64 2871, i64 0, i64 %t64) unreachable -inrange5478: +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.3606, i64 10, i64 0 }) + %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.3607, i64 6, i64 0 }) + %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 @@ -50290,40 +50345,40 @@ inrange5478: %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) + br i1 %t88, label %panic5486, label %ok5487 +panic5486: + call void @finch_panic(ptr @.str.3613, i64 2877, ptr @.str.3614) unreachable -ok5480: +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.3608, i64 4, i64 0 }, ptr %a93 + 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.3611, i64 1, i64 0 }, ptr %a98 + 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 %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3613, i64 2877, ptr @.str.3614) + br i1 %t103, label %panic5488, label %ok5489 +panic5488: + call void @finch_panic(ptr @.str.3617, i64 2877, ptr @.str.3618) unreachable -ok5482: +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.3612, i64 12, i64 0 }, ptr %a108 + 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.3615, i64 36, i64 0 }, ptr %a113 + 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 @@ -50333,7 +50388,7 @@ ok5482: 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 + 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) @@ -50344,11 +50399,11 @@ ok5482: 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) + br i1 %t131, label %panic5490, label %ok5491 +panic5490: + call void @finch_panic(ptr @.str.3621, i64 2878, ptr @.str.3622) unreachable -ok5484: +ok5491: %t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 9 store i1 true, ptr %t132 %t133 = load ptr, ptr %a1 @@ -50427,11 +50482,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 %range5492, label %inrange5493 +range5492: + call void @finch_panic_index(ptr @.str.3623, i64 2885, i64 0, i64 %t7) unreachable -inrange5486: +inrange5493: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -50444,10 +50499,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.3624, 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.3625, 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 @@ -50460,37 +50515,37 @@ 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 %then5494, label %endif5496 +then5494: %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.3627, 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) + %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 %range5490, label %inrange5491 -range5490: - call void @finch_panic_index(ptr @.str.3624, i64 2894, i64 1, i64 %t45) + br i1 %t46, label %range5497, label %inrange5498 +range5497: + call void @finch_panic_index(ptr @.str.3628, i64 2894, i64 1, i64 %t45) unreachable -inrange5491: +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 %panic5492, label %ok5493 -panic5492: - call void @finch_panic(ptr @.str.3625, i64 2895, ptr @.str.3626) + br i1 %t51, label %panic5499, label %ok5500 +panic5499: + call void @finch_panic(ptr @.str.3629, i64 2895, ptr @.str.3630) unreachable -ok5493: +ok5500: %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 9 %t53 = load i1, ptr %t52 store i1 %t53, ptr %a54 @@ -50498,72 +50553,72 @@ ok5493: 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: + 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.3627, i64 4, i64 0 }, ptr %a62 + 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.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: + 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.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: + 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 %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3628, i64 2898, i64 1, i64 %t72) + br i1 %t73, label %range5512, label %inrange5513 +range5512: + call void @finch_panic_index(ptr @.str.3632, i64 2898, i64 1, i64 %t72) unreachable -inrange5506: +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.3629, i64 142, i64 0 }) - br label %endif5504 -endif5504: + 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.from5507 -logic.from5507: - br i1 %t77, label %logic.rhs5508, label %logic.end5509 -logic.rhs5508: + 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.3630, i64 4, i64 0 }, ptr %a82 + 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.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: + 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.3631, i64 6, i64 0 }) + %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 @@ -50577,10 +50632,10 @@ then5511: %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 }) + %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 -endif5513: +endif5520: %t99 = load ptr, ptr %a1 %t100 = load { ptr, i64, i64 }, ptr %a25 call void @finch.gen.br(ptr %t99, { ptr, i64, i64 } %t100) @@ -50592,51 +50647,51 @@ endif5513: call void @finch.copy.S_gen_Val(ptr %a105, ptr %a104) %t106 = load %S.gen.Val, ptr %a105 ret %S.gen.Val %t106 -endif5489: +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.3633, i64 4, i64 0 }, ptr %a111 + 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 %then5514, label %endif5516 -then5514: + 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 %range5517, label %inrange5518 -range5517: - call void @finch_panic_index(ptr @.str.3634, i64 2913, i64 1, i64 %t117) + br i1 %t118, label %range5524, label %inrange5525 +range5524: + call void @finch_panic_index(ptr @.str.3638, i64 2913, i64 1, i64 %t117) unreachable -inrange5518: +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.3635, i64 98, i64 0 }) - br label %endif5516 -endif5516: + 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) %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 }) + %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.3636, i64 3, i64 0 }, %S.ast.Type %t125, { ptr, i64, i64 } %t127, i1 true) + %t128 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.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 %range5519, label %inrange5520 -range5519: - call void @finch_panic_index(ptr @.str.3638, i64 2917, i64 1, i64 %t133) + br i1 %t134, label %range5526, label %inrange5527 +range5526: + call void @finch_panic_index(ptr @.str.3642, i64 2917, i64 1, i64 %t133) unreachable -inrange5520: +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 @@ -50649,15 +50704,15 @@ inrange5520: %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) + br i1 %t146, label %range5528, label %inrange5529 +range5528: + call void @finch_panic_index(ptr @.str.3643, i64 2917, i64 1, i64 %t145) unreachable -inrange5522: +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.3640, i64 20, i64 0 }) + %t150 = call %S.gen.Val @finch.gen.coerce(ptr %t129, %S.gen.Val %t140, %S.ast.Type %t142, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.3644, i64 20, i64 0 }) store %S.gen.Val %t150, ptr %a151 %t152 = load ptr, ptr %a1 %t153 = load %S.gen.Val, ptr %a151 @@ -50666,10 +50721,10 @@ inrange5522: %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 }) + %t158 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t157, { ptr, i64, i64 } { ptr @.str.3645, i64 7, i64 0 }) store { ptr, i64, i64 } %t158, ptr %a159 %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t160, { ptr, i64, i64 } { ptr @.str.3642, i64 6, i64 0 }) + %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 @@ -50694,12 +50749,12 @@ inrange5522: %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 } { 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.3644, i64 3, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.3648, i64 3, i64 0 }, ptr %a186 call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) %t187 = load { ptr, i64, i64 }, ptr %a184 %t188 = load { ptr, i64, i64 }, ptr %a155 @@ -50708,7 +50763,7 @@ inrange5522: 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 + 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 @@ -50717,7 +50772,7 @@ inrange5522: 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 + 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 @@ -50727,7 +50782,7 @@ inrange5522: 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 + 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 @@ -50736,7 +50791,7 @@ inrange5522: 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 + 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) @@ -50770,31 +50825,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.3653, 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 %then5530, label %endif5532 +then5530: %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: +endif5532: %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.3654, 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 %then5533, label %endif5535 +then5533: %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: +endif5535: %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) @@ -50884,34 +50939,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.3655, 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 %then5536, label %endif5538 +then5536: %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.3657, 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.from5539 +logic.from5539: + br i1 %t20, label %logic.end5541, label %logic.rhs5540 +logic.rhs5540: %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.3659, 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.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: store i64 0, ptr %a29 %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t31 = load { ptr, i64, i64 }, ptr %t30 @@ -50919,18 +50974,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.3660, i64 2946) %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.cond5546 +each.cond5546: %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.body5547, label %each.end5549 +each.body5547: %t44 = load ptr, ptr %a38 %t45 = getelementptr inbounds i8, ptr %t44, i64 %t42 %t46 = load i8, ptr %t45 @@ -50942,134 +50997,134 @@ 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.from5550 +logic.from5550: + br i1 %t54, label %logic.rhs5551, label %logic.end5552 +logic.rhs5551: %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.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: %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 %endif5556 +endif5556: %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.from5557 +logic.from5557: + br i1 %t64, label %logic.rhs5558, label %logic.end5559 +logic.rhs5558: %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.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: %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 %endif5563 +endif5563: %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.step5548 +each.step5548: %t77 = load i64, ptr %a39 %t78 = add i64 %t77, 1 store i64 %t78, ptr %a39 - br label %each.cond5539 -each.end5542: + br label %each.cond5546 +each.end5549: %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.3661, i64 3, i64 0 }) %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 ret %S.gen.Val %t85 -endif5538: +endif5545: %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.3662, i64 2958) call void @finch_str_from_int(ptr %a90, i64 %t89) %t91 = load { ptr, i64, i64 }, ptr %a90 %t92 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t91, 0 - %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3659, i64 3, i64 0 }) + %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }) %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 ret %S.gen.Val %t95 -endif5531: +endif5538: %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.3664, 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 %then5564, label %endif5566 +then5564: %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.3665, i64 5, i64 0 }) %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 ret %S.gen.Val %t109 -endif5559: +endif5566: %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.3666, 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 %then5567, label %endif5569 +then5567: %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.3667, i64 4, i64 0 }) %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 ret %S.gen.Val %t122 -endif5562: +endif5569: %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.3668, 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 %then5570, label %endif5572 +then5570: %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 %range5573, label %inrange5574 +range5573: + call void @finch_panic_index(ptr @.str.3669, i64 2967, i64 0, i64 %t130) unreachable -inrange5567: +inrange5574: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds i8, ptr %t132, i64 0 %t134 = load i8, ptr %t133 @@ -51079,70 +51134,70 @@ 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.3670, i64 4, i64 0 }) %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 ret %S.gen.Val %t142 -endif5565: +endif5572: %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.3671, 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 %then5575, label %endif5577 +then5575: %t148 = load ptr, ptr %a1 %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t150 = load { ptr, i64, i64 }, ptr %t149 %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) ret %S.gen.Val %t151 -endif5570: +endif5577: %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.3672, 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 %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 }) %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 ret %S.gen.Val %t159 -endif5573: +endif5580: %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.3675, 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.from5581 +logic.from5581: + br i1 %t164, label %logic.end5583, label %logic.rhs5582 +logic.rhs5582: %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.3676, 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.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: %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.3677, 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.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: %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) @@ -51150,15 +51205,15 @@ 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 %then5592, label %endif5594 +then5592: %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 %t185 = load %S.gen.Val, ptr %t184 store %S.gen.Val %t185, ptr %a186 call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) %t188 = load %S.gen.Val, ptr %a187 ret %S.gen.Val %t188 -endif5587: +endif5594: %t189 = load ptr, ptr %a1 %t190 = load ptr, ptr %a1 %t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 @@ -51178,121 +51233,121 @@ endif5587: %t205 = load %S.ast.Type, ptr %a204 %t206 = insertvalue %S.gen.Val %t199, %S.ast.Type %t205, 1 ret %S.gen.Val %t206 -endif5584: +endif5591: %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 + 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 %then5588, label %endif5590 -then5588: + 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 -endif5590: +endif5597: %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 + 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 %then5591, label %endif5593 -then5591: + 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 -endif5593: +endif5600: %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 + 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 %then5594, label %endif5596 -then5594: + 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 -endif5596: +endif5603: %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 + 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 %then5597, label %endif5599 -then5597: + 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 -endif5599: +endif5606: %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 + 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 %then5600, label %endif5602 -then5600: + 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 -endif5602: +endif5609: %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 + 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 %then5603, label %endif5605 -then5603: + 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 -endif5605: +endif5612: %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 + 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 %then5606, label %endif5608 -then5606: + 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 -endif5608: +endif5615: %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 + 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 %then5609, label %endif5611 -then5609: + 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.3682, i64 4, i64 0 }) + %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 -endif5611: +endif5618: %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 + 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 %then5612, label %endif5614 -then5612: + 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.3684, i64 4, i64 0 }) + %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 -endif5614: +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.3685, i64 19, i64 0 }, ptr %a285 + 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 @@ -51382,11 +51437,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 %range5622, label %inrange5623 +range5622: + call void @finch_panic_index(ptr @.str.3690, i64 3015, i64 0, i64 %t6) unreachable -inrange5616: +inrange5623: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 %t10 = load %S.ast.Node, ptr %t9 @@ -51395,82 +51450,82 @@ 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.3691, 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 %then5624, label %endif5626 +then5624: %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.3692, 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 %range5627, label %inrange5628 +range5627: + call void @finch_panic_index(ptr @.str.3693, i64 3017, i64 0, i64 %t24) unreachable -inrange5621: +inrange5628: %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 }) + %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.3691, i64 7, i64 0 }, ptr %a35 + 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.3692, i64 6, i64 0 }, ptr %a40 + 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.3693, i64 4, i64 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 -endif5619: +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.3694, i64 1, i64 0 }, ptr %a49 + 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 %then5622, label %endif5624 -then5622: + 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 %then5625, label %endif5627 -then5625: + 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.3695, i64 45, i64 0 }, ptr %a62 + 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 %endif5627 -endif5627: + 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.3696, i64 4, i64 0 }, ptr %a71 + 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.3697, i64 1, i64 0 }, ptr %a76 + 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 @@ -51480,7 +51535,7 @@ endif5627: 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 + 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) @@ -51492,48 +51547,48 @@ endif5627: %t94 = load %S.ast.Type, ptr %a93 %t95 = insertvalue %S.gen.Val %t89, %S.ast.Type %t94, 1 ret %S.gen.Val %t95 -endif5624: +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 %then5628, label %endif5630 -then5628: + 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.3699, i64 34, i64 0 }, ptr %a106 + 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 %endif5630 -endif5630: + 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 %then5631, label %endif5633 -then5631: + 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 %then5634, label %endif5636 -then5634: + 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.3701, i64 1, i64 0 }, ptr %a117 + 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 %then5637, label %endif5639 -then5637: + 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.3702, i64 3032) + 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 @@ -51544,10 +51599,10 @@ then5637: %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: +endif5646: %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 } { 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 @@ -51560,18 +51615,18 @@ endif5639: %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: +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.3704, i64 4, i64 0 }, ptr %a156 + 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.3705, i64 4, i64 0 }, ptr %a161 + 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 @@ -51589,23 +51644,23 @@ endif5636: %t175 = load %S.ast.Type, ptr %a174 %t176 = insertvalue %S.gen.Val %t170, %S.ast.Type %t175, 1 ret %S.gen.Val %t176 -endif5633: +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 %then5640, label %endif5642 -then5640: + 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.3706, i64 5, i64 0 }, ptr %a186 + 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.3707, i64 1, i64 0 }, ptr %a191 + 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 @@ -51623,13 +51678,13 @@ then5640: %t205 = load %S.ast.Type, ptr %a204 %t206 = insertvalue %S.gen.Val %t200, %S.ast.Type %t205, 1 ret %S.gen.Val %t206 -endif5642: +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.3708, i64 26, i64 0 }, ptr %a213 + 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 @@ -51717,12 +51772,12 @@ entry: store %S.gen.Val %p3, ptr %a4 store %S.ast.Node %p4, ptr %a5 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3709, i64 11, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3713, 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.3714, 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 @@ -51739,11 +51794,11 @@ entry: %t26 = load %S.ast.Type, ptr %t25 %t27 = call i1 @finch.ast.same(%S.ast.Type %t24, %S.ast.Type %t26) %t28 = xor i1 %t27, true - br i1 %t28, label %then5643, label %endif5645 -then5643: + 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.3711, i64 5, i64 0 }, ptr %a32 + 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 @@ -51754,251 +51809,251 @@ then5643: 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: + br label %endif5652 +endif5652: %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 + 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.from5646 -logic.from5646: - br i1 %t45, label %logic.rhs5647, label %logic.end5648 -logic.rhs5647: + 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 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3713, i64 3, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br label %logic.from5649 -logic.from5649: - br i1 %t52, label %logic.end5651, label %logic.rhs5650 -logic.rhs5650: + 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 %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.3718, 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: + 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.3715, i64 48, i64 0 }, ptr %a65 + 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 %endif5656 -endif5656: + br label %endif5663 +endif5663: %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 + 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.from5657 -logic.from5657: - br i1 %t71, label %logic.end5659, label %logic.rhs5658 -logic.rhs5658: + 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.3717, i64 1, i64 0 }, ptr %a74 + 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.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: + 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.3718, i64 4, i64 0 }, ptr %a82 + 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.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: + 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.3719, i64 1, i64 0 }, ptr %a88 + 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 %then5668, label %else5669 -then5668: + 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.3720, i64 26, i64 0 }, ptr %a94 + 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 %endif5670 -else5669: + br label %endif5677 +else5676: %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 + 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 %endif5670 -endif5670: - br label %endif5667 -else5666: + 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.3722, i64 1, i64 0 }, ptr %a103 + 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.from5671 -logic.from5671: - br i1 %t105, label %logic.end5673, label %logic.rhs5672 -logic.rhs5672: + 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.3723, i64 1, i64 0 }, ptr %a108 + 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.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: + 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 store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.3724, i64 1, i64 0 }, ptr %a114 + 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.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: + 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.3725, i64 2, i64 0 }, ptr %a120 + 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.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 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3728, i64 6, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 + br label %logic.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 %t141, label %logic.end5692, label %logic.rhs5691 + br i1 %t123, 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 + %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: - %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 + %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 + store { ptr, i64, i64 } %t137, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a139 + %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) + %t141 = icmp ne i32 %t140, 0 br label %logic.from5697 logic.from5697: - br i1 %t154, label %logic.end5699, label %logic.rhs5698 + br i1 %t141, 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 + %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: - %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: + %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.3732, i64 31, i64 0 }, ptr %a165 + 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 %endif5704 -endif5704: + br label %endif5711 +endif5711: %t167 = load ptr, ptr %a1 %t168 = load %S.ast.Node, ptr %a5 %t169 = load { ptr, i64, i64 }, ptr %a22 @@ -52032,132 +52087,132 @@ entry: 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 %panic5712, label %ok5713 +panic5712: + call void @finch_panic(ptr @.str.3737, i64 3069, ptr @.str.3738) unreachable -ok5706: +ok5713: %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 %panic5714, label %ok5715 +panic5714: + call void @finch_panic(ptr @.str.3739, i64 3069, ptr @.str.3740) unreachable -ok5708: +ok5715: %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 %then5716, label %endif5718 +then5716: ret i1 true -endif5711: +endif5718: %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 %panic5719, label %ok5720 +panic5719: + call void @finch_panic(ptr @.str.3741, i64 3072, ptr @.str.3742) unreachable -ok5713: +ok5720: %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.from5721 +logic.from5721: + br i1 %t17, label %logic.rhs5722, label %logic.end5723 +logic.rhs5722: %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 %panic5724, label %ok5725 +panic5724: + call void @finch_panic(ptr @.str.3743, i64 3072, ptr @.str.3744) unreachable -ok5718: +ok5725: %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.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: %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 %panic5730, label %ok5731 +panic5730: + call void @finch_panic(ptr @.str.3745, i64 3075, ptr @.str.3746) unreachable -ok5724: +ok5731: %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.from5732 +logic.from5732: + br i1 %t27, label %logic.rhs5733, label %logic.end5734 +logic.rhs5733: %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 %panic5735, label %ok5736 +panic5735: + call void @finch_panic(ptr @.str.3747, i64 3075, ptr @.str.3748) unreachable -ok5729: +ok5736: %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.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: %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 %panic5741, label %ok5742 +panic5741: + call void @finch_panic(ptr @.str.3749, i64 3075, ptr @.str.3750) unreachable -ok5735: +ok5742: %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 %panic5743, label %ok5744 +panic5743: + call void @finch_panic(ptr @.str.3751, i64 3075, ptr @.str.3752) unreachable -ok5737: +ok5744: %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 %panic5745, label %ok5746 +panic5745: + call void @finch_panic(ptr @.str.3753, i64 3075, ptr @.str.3754) unreachable -ok5739: +ok5746: %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.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: %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 %panic5751, label %ok5752 +panic5751: + call void @finch_panic(ptr @.str.3755, i64 3076, ptr @.str.3756) unreachable -ok5745: +ok5752: %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 @@ -52166,11 +52221,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 %panic5753, label %ok5754 +panic5753: + call void @finch_panic(ptr @.str.3757, i64 3076, ptr @.str.3758) unreachable -ok5747: +ok5754: %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 @@ -52180,88 +52235,88 @@ 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) - unreachable -ok5749: - store %S.gen.Val %t64, ptr %t65 - 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) - 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 + br i1 %t66, label %panic5755, label %ok5756 panic5755: - call void @finch_panic(ptr @.str.3759, i64 3079, ptr @.str.3760) + call void @finch_panic(ptr @.str.3759, i64 3076, ptr @.str.3760) unreachable ok5756: + store %S.gen.Val %t64, ptr %t65 + 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) + 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) + 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.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: + 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 %panic5761, label %ok5762 -panic5761: - call void @finch_panic(ptr @.str.3761, i64 3079, ptr @.str.3762) + br i1 %t78, label %panic5768, label %ok5769 +panic5768: + call void @finch_panic(ptr @.str.3765, i64 3079, ptr @.str.3766) unreachable -ok5762: +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 %panic5763, label %ok5764 -panic5763: - call void @finch_panic(ptr @.str.3763, i64 3079, ptr @.str.3764) + br i1 %t82, label %panic5770, label %ok5771 +panic5770: + call void @finch_panic(ptr @.str.3767, i64 3079, ptr @.str.3768) unreachable -ok5764: +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 %panic5765, label %ok5766 -panic5765: - call void @finch_panic(ptr @.str.3765, i64 3079, ptr @.str.3766) + br i1 %t86, label %panic5772, label %ok5773 +panic5772: + call void @finch_panic(ptr @.str.3769, i64 3079, ptr @.str.3770) unreachable -ok5766: +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.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: + 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 %panic5771, label %ok5772 -panic5771: - call void @finch_panic(ptr @.str.3767, i64 3080, ptr @.str.3768) + br i1 %t92, label %panic5778, label %ok5779 +panic5778: + call void @finch_panic(ptr @.str.3771, i64 3080, ptr @.str.3772) unreachable -ok5772: +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 @@ -52270,11 +52325,11 @@ ok5772: %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) + br i1 %t100, label %panic5780, label %ok5781 +panic5780: + call void @finch_panic(ptr @.str.3773, i64 3080, ptr @.str.3774) unreachable -ok5774: +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 @@ -52284,72 +52339,72 @@ ok5774: %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) + br i1 %t109, label %panic5782, label %ok5783 +panic5782: + call void @finch_panic(ptr @.str.3775, i64 3080, ptr @.str.3776) unreachable -ok5776: +ok5783: store %S.gen.Val %t107, ptr %t108 ret i1 true -endif5770: +endif5777: %t110 = load ptr, ptr %a2 %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 %panic5784, label %ok5785 +panic5784: + call void @finch_panic(ptr @.str.3777, i64 3083, ptr @.str.3778) unreachable -ok5778: +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 %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 %panic5786, label %ok5787 +panic5786: + call void @finch_panic(ptr @.str.3779, i64 3083, ptr @.str.3780) unreachable -ok5780: +ok5787: %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: + 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 %panic5784, label %ok5785 -panic5784: - call void @finch_panic(ptr @.str.3777, i64 3084, ptr @.str.3778) + br i1 %t121, label %panic5791, label %ok5792 +panic5791: + call void @finch_panic(ptr @.str.3781, i64 3084, ptr @.str.3782) unreachable -ok5785: +ok5792: %t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0 %t123 = load { ptr, i64, i64 }, ptr %t122 %t124 = load ptr, ptr %a2 %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic5786, label %ok5787 -panic5786: - call void @finch_panic(ptr @.str.3779, i64 3084, ptr @.str.3780) + br i1 %t125, label %panic5793, label %ok5794 +panic5793: + call void @finch_panic(ptr @.str.3783, i64 3084, ptr @.str.3784) unreachable -ok5787: +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 %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 %panic5795, label %ok5796 +panic5795: + call void @finch_panic(ptr @.str.3785, i64 3084, ptr @.str.3786) unreachable -ok5789: +ok5796: %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) + br i1 %t135, label %panic5797, label %ok5798 +panic5797: + call void @finch_panic(ptr @.str.3787, i64 3084, ptr @.str.3788) unreachable -ok5791: +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 @@ -52358,72 +52413,72 @@ ok5791: %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) + br i1 %t143, label %panic5799, label %ok5800 +panic5799: + call void @finch_panic(ptr @.str.3789, i64 3084, ptr @.str.3790) unreachable -ok5793: +ok5800: store %S.gen.Val %t141, ptr %t142 ret i1 true -endif5783: +endif5790: %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) + br i1 %t145, label %panic5801, label %ok5802 +panic5801: + call void @finch_panic(ptr @.str.3791, i64 3087, ptr @.str.3792) unreachable -ok5795: +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 %panic5796, label %ok5797 -panic5796: - call void @finch_panic(ptr @.str.3789, i64 3087, ptr @.str.3790) + br i1 %t149, label %panic5803, label %ok5804 +panic5803: + call void @finch_panic(ptr @.str.3793, i64 3087, ptr @.str.3794) unreachable -ok5797: +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 %then5798, label %endif5800 -then5798: + br i1 %t152, label %then5805, label %endif5807 +then5805: %t153 = load ptr, ptr %a1 %t154 = load ptr, ptr %a3 %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 %panic5808, label %ok5809 +panic5808: + call void @finch_panic(ptr @.str.3795, i64 3088, ptr @.str.3796) unreachable -ok5802: +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 %panic5803, label %ok5804 -panic5803: - call void @finch_panic(ptr @.str.3793, i64 3088, ptr @.str.3794) + br i1 %t159, label %panic5810, label %ok5811 +panic5810: + call void @finch_panic(ptr @.str.3797, i64 3088, ptr @.str.3798) unreachable -ok5804: +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 %panic5805, label %ok5806 -panic5805: - call void @finch_panic(ptr @.str.3795, i64 3088, ptr @.str.3796) + br i1 %t163, label %panic5812, label %ok5813 +panic5812: + call void @finch_panic(ptr @.str.3799, i64 3088, ptr @.str.3800) unreachable -ok5806: +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 %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 %panic5814, label %ok5815 +panic5814: + call void @finch_panic(ptr @.str.3801, i64 3088, ptr @.str.3802) unreachable -ok5808: +ok5815: %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 @@ -52432,271 +52487,271 @@ ok5808: %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) + br i1 %t177, label %panic5816, label %ok5817 +panic5816: + call void @finch_panic(ptr @.str.3803, i64 3088, ptr @.str.3804) unreachable -ok5810: +ok5817: store %S.gen.Val %t175, ptr %t176 ret i1 true -endif5800: +endif5807: ret i1 false -endif5722: +endif5729: %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) + br i1 %t179, label %panic5818, label %ok5819 +panic5818: + call void @finch_panic(ptr @.str.3805, i64 3093, ptr @.str.3806) unreachable -ok5812: +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.from5813 -logic.from5813: - br i1 %t182, label %logic.rhs5814, label %logic.end5815 -logic.rhs5814: + 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 %panic5816, label %ok5817 -panic5816: - call void @finch_panic(ptr @.str.3803, i64 3093, ptr @.str.3804) + br i1 %t184, label %panic5823, label %ok5824 +panic5823: + call void @finch_panic(ptr @.str.3807, i64 3093, ptr @.str.3808) unreachable -ok5817: +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.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: + 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 %panic5822, label %ok5823 -panic5822: - call void @finch_panic(ptr @.str.3805, i64 3094, ptr @.str.3806) + br i1 %t191, label %panic5829, label %ok5830 +panic5829: + call void @finch_panic(ptr @.str.3809, i64 3094, ptr @.str.3810) unreachable -ok5823: +ok5830: %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) + br i1 %t194, label %panic5831, label %ok5832 +panic5831: + call void @finch_panic(ptr @.str.3811, i64 3094, ptr @.str.3812) unreachable -ok5825: +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.3809, i64 0, i64 0 }) + %t198 = call %S.gen.Val @finch.gen.coerce(ptr %t189, %S.gen.Val %t192, %S.ast.Type %t196, %S.ast.Node %t197, { ptr, i64, i64 } { ptr @.str.3813, 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) + br i1 %t200, label %panic5833, label %ok5834 +panic5833: + call void @finch_panic(ptr @.str.3814, i64 3094, ptr @.str.3815) unreachable -ok5827: +ok5834: store %S.gen.Val %t198, ptr %t199 ret i1 true -endif5821: +endif5828: %t201 = load ptr, ptr %a2 %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 %panic5835, label %ok5836 +panic5835: + call void @finch_panic(ptr @.str.3816, i64 3097, ptr @.str.3817) unreachable -ok5829: +ok5836: %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: + 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 %panic5833, label %ok5834 -panic5833: - call void @finch_panic(ptr @.str.3814, i64 3097, ptr @.str.3815) + br i1 %t207, label %panic5840, label %ok5841 +panic5840: + call void @finch_panic(ptr @.str.3818, i64 3097, ptr @.str.3819) unreachable -ok5834: +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.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: + 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 %panic5839, label %ok5840 -panic5839: - call void @finch_panic(ptr @.str.3816, i64 3098, ptr @.str.3817) + br i1 %t214, label %panic5846, label %ok5847 +panic5846: + call void @finch_panic(ptr @.str.3820, i64 3098, ptr @.str.3821) unreachable -ok5840: +ok5847: %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) + br i1 %t217, label %panic5848, label %ok5849 +panic5848: + call void @finch_panic(ptr @.str.3822, i64 3098, ptr @.str.3823) unreachable -ok5842: +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.3820, i64 0, i64 0 }) + %t221 = call %S.gen.Val @finch.gen.coerce(ptr %t212, %S.gen.Val %t215, %S.ast.Type %t219, %S.ast.Node %t220, { ptr, i64, i64 } { ptr @.str.3824, 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) + br i1 %t223, label %panic5850, label %ok5851 +panic5850: + call void @finch_panic(ptr @.str.3825, i64 3098, ptr @.str.3826) unreachable -ok5844: +ok5851: store %S.gen.Val %t221, ptr %t222 ret i1 true -endif5838: +endif5845: %t224 = load ptr, ptr %a2 %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 %panic5852, label %ok5853 +panic5852: + call void @finch_panic(ptr @.str.3827, i64 3101, ptr @.str.3828) unreachable -ok5846: +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.from5847 -logic.from5847: - br i1 %t228, label %logic.rhs5848, label %logic.end5849 -logic.rhs5848: + 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 %panic5850, label %ok5851 -panic5850: - call void @finch_panic(ptr @.str.3825, i64 3101, ptr @.str.3826) + br i1 %t230, label %panic5857, label %ok5858 +panic5857: + call void @finch_panic(ptr @.str.3829, i64 3101, ptr @.str.3830) unreachable -ok5851: +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.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: + 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 %panic5856, label %ok5857 -panic5856: - call void @finch_panic(ptr @.str.3827, i64 3102, ptr @.str.3828) + br i1 %t236, label %panic5863, label %ok5864 +panic5863: + call void @finch_panic(ptr @.str.3831, i64 3102, ptr @.str.3832) unreachable -ok5857: +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.3829, i64 3, i64 0 }, ptr %a241 + 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 %then5858, label %endif5860 -then5858: + 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 %panic5861, label %ok5862 -panic5861: - call void @finch_panic(ptr @.str.3830, i64 3103, ptr @.str.3831) + br i1 %t246, label %panic5868, label %ok5869 +panic5868: + call void @finch_panic(ptr @.str.3834, i64 3103, ptr @.str.3835) unreachable -ok5862: +ok5869: %t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0 %t248 = load { ptr, i64, i64 }, ptr %t247 %t249 = load ptr, ptr %a2 %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic5863, label %ok5864 -panic5863: - call void @finch_panic(ptr @.str.3832, i64 3103, ptr @.str.3833) + br i1 %t250, label %panic5870, label %ok5871 +panic5870: + call void @finch_panic(ptr @.str.3836, i64 3103, ptr @.str.3837) unreachable -ok5864: +ok5871: %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 }) + %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.3835, i64 5, i64 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 %panic5865, label %ok5866 -panic5865: - call void @finch_panic(ptr @.str.3836, i64 3103, ptr @.str.3837) + br i1 %t259, label %panic5872, label %ok5873 +panic5872: + call void @finch_panic(ptr @.str.3840, i64 3103, ptr @.str.3841) unreachable -ok5866: +ok5873: store %S.gen.Val %t257, ptr %t258 - br label %endif5860 -endif5860: + br label %endif5867 +endif5867: %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) + br i1 %t261, label %panic5874, label %ok5875 +panic5874: + call void @finch_panic(ptr @.str.3842, i64 3105, ptr @.str.3843) unreachable -ok5868: +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.3840, i64 3, i64 0 }, ptr %a266 + 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 %then5869, label %endif5871 -then5869: + 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 %panic5872, label %ok5873 -panic5872: - call void @finch_panic(ptr @.str.3841, i64 3106, ptr @.str.3842) + br i1 %t271, label %panic5879, label %ok5880 +panic5879: + call void @finch_panic(ptr @.str.3845, i64 3106, ptr @.str.3846) unreachable -ok5873: +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 %panic5874, label %ok5875 -panic5874: - call void @finch_panic(ptr @.str.3843, i64 3106, ptr @.str.3844) + br i1 %t275, label %panic5881, label %ok5882 +panic5881: + call void @finch_panic(ptr @.str.3847, i64 3106, ptr @.str.3848) unreachable -ok5875: +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.3845, i64 5, i64 0 }) + %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.3846, i64 5, i64 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 %panic5876, label %ok5877 -panic5876: - call void @finch_panic(ptr @.str.3847, i64 3106, ptr @.str.3848) + br i1 %t284, label %panic5883, label %ok5884 +panic5883: + call void @finch_panic(ptr @.str.3851, i64 3106, ptr @.str.3852) unreachable -ok5877: +ok5884: store %S.gen.Val %t282, ptr %t283 - br label %endif5871 -endif5871: + br label %endif5878 +endif5878: ret i1 true -endif5855: +endif5862: ret i1 false } @@ -52830,54 +52885,54 @@ entry: store %S.ast.Node %p4, ptr %a11 %t12 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.3849, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3853, 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.from5885 +logic.from5885: + br i1 %t16, label %logic.rhs5886, label %logic.end5887 +logic.rhs5886: %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.3854, 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.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: %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.3855, 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.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: %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.3856, 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.3857, 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.3858, 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 @@ -52888,7 +52943,7 @@ then5886: 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 + 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 @@ -52899,59 +52954,59 @@ then5886: 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 } { ptr @.str.3860, i64 1, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t67) %t68 = load ptr, ptr %a1 %t69 = load { ptr, i64, i64 }, ptr %a35 - %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.3857, i64 17, i64 0 }, { ptr, i64, i64 } %t69) + %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.3858, i64 3, i64 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 -endif5888: +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 %then5889, label %endif5891 -then5889: + br i1 %t77, label %then5896, label %endif5898 +then5896: %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: + 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 %then5892, label %endif5894 -then5892: + 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.3859, i64 1, i64 0 }, ptr %t88 + 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.3860, i64 1, i64 0 }, ptr %t89 + 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.3861, i64 1, i64 0 }, ptr %t90 + 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.3862, i64 1, i64 0 }, ptr %t91 + 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.3863, i64 1, i64 0 }, ptr %t92 + 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.3864, i64 1, i64 0 }, ptr %t93 + 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.3865, i64 1, i64 0 }, ptr %t94 + 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.3866, i64 1, i64 0 }, ptr %t95 + 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.3867, i64 2, i64 0 }, ptr %t96 + 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.3868, i64 2, i64 0 }, ptr %t97 + 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 @@ -52959,25 +53014,25 @@ then5892: %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 + 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.3870, i64 3, i64 0 }, ptr %t105 + 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.3871, i64 3, i64 0 }, ptr %t106 + 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.3872, i64 4, i64 0 }, ptr %t107 + 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.3873, i64 4, i64 0 }, ptr %t108 + 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.3874, i64 3, i64 0 }, ptr %t109 + 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.3875, i64 2, i64 0 }, ptr %t110 + 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.3876, i64 3, i64 0 }, ptr %t111 + 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.3877, i64 3, i64 0 }, ptr %t112 + 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.3878, i64 4, i64 0 }, ptr %t113 + 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 @@ -52985,77 +53040,77 @@ then5892: %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: + 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.3879, i64 3, i64 0 }, ptr %t123 + 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.3880, i64 3, i64 0 }, ptr %t124 + 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.3881, i64 3, i64 0 }, ptr %t125 + 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.3882, i64 4, i64 0 }, ptr %t126 + 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.3883, i64 4, i64 0 }, ptr %t127 + 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.3884, i64 3, i64 0 }, ptr %t128 + 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.3885, i64 2, i64 0 }, ptr %t129 + 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.3886, i64 3, i64 0 }, ptr %t130 + 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.3887, i64 3, i64 0 }, ptr %t131 + 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.3888, i64 4, i64 0 }, ptr %t132 + 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 %endif5897 -endif5897: + 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.cond5898 -find.cond5898: + br label %find.cond5905 +find.cond5905: %t142 = load i64, ptr %a141 %t143 = icmp slt i64 %t142, %t139 - br i1 %t143, label %find.body5899, label %find.end5902 -find.body5899: + 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.hit5900, label %find.next5901 -find.hit5900: + br i1 %t149, label %find.hit5907, label %find.next5908 +find.hit5907: store i64 %t142, ptr %a138 - br label %find.end5902 -find.next5901: + br label %find.end5909 +find.next5908: %t150 = add i64 %t142, 1 store i64 %t150, ptr %a141 - br label %find.cond5898 -find.end5902: + 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 %then5903, label %endif5905 -then5903: + 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 %endif5905 -endif5905: + 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 @@ -53063,63 +53118,63 @@ endif5905: 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 + 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.from5906 -logic.from5906: - br i1 %t169, label %logic.end5908, label %logic.rhs5907 -logic.rhs5907: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.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 + br i1 %t169, label %logic.end5915, label %logic.rhs5914 logic.rhs5914: - %t178 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3891, i64 1, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 + %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: - %t184 = phi i1 [ false, %logic.from5913 ], [ %t183, %logic.rend5916 ] - br i1 %t184, label %then5917, label %endif5919 + %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 + store { ptr, i64, i64 } %t179, ptr %a180 + store { ptr, i64, i64 } { ptr @.str.3895, 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.3892, i64 16, i64 0 }) - br label %endif5919 -endif5919: + 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 %then5920, label %endif5922 -then5920: + 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.3893, i64 8, i64 0 }, ptr %a194 + 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.3894, i64 1, i64 0 }, ptr %a199 + 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 @@ -53129,31 +53184,31 @@ then5920: 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 + store { ptr, i64, i64 } { ptr @.str.3899, i64 3, i64 0 }, ptr %a209 call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) %t210 = load { ptr, i64, i64 }, ptr %a207 %t211 = call { ptr, i64, i64 } @finch.gen.op(ptr %t191, { ptr, i64, i64 } %t210) %t212 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t190, { ptr, i64, i64 } %t211, { ptr, i64, i64 } { ptr @.str.3896, i64 16, i64 0 }, %S.ast.Node %t212) - br label %endif5922 -endif5922: - br label %endif5912 -endif5912: + 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 %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3897, i64 3145, i64 %t214, i64 %t216) + br i1 %t217, label %range5930, label %inrange5931 +range5930: + call void @finch_panic_index(ptr @.str.3901, i64 3145, i64 %t214, i64 %t216) unreachable -inrange5924: +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.3898, i64 1, i64 0 }, ptr %a223 + 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 @@ -53162,7 +53217,7 @@ inrange5924: 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 + 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 @@ -53172,7 +53227,7 @@ inrange5924: 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.3900, i64 2, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.3904, i64 2, i64 0 }, ptr %a242 call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) %t243 = load { ptr, i64, i64 }, ptr %a240 %t244 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -53190,24 +53245,24 @@ inrange5924: %t256 = load %S.ast.Type, ptr %a255 %t257 = insertvalue %S.gen.Val %t251, %S.ast.Type %t256, 1 ret %S.gen.Val %t257 -endif5894: +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 %then5925, label %endif5927 -then5925: + 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.3901, i64 1, i64 0 }, ptr %t263 + 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.3902, i64 1, i64 0 }, ptr %t264 + 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.3903, i64 1, i64 0 }, ptr %t265 + 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.3904, i64 1, i64 0 }, ptr %t266 + 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.3905, i64 1, i64 0 }, ptr %t267 + 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 @@ -53215,15 +53270,15 @@ then5925: %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 + 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.3907, i64 4, i64 0 }, ptr %t275 + 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.3908, i64 4, i64 0 }, ptr %t276 + 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.3909, i64 4, i64 0 }, ptr %t277 + 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.3910, i64 4, i64 0 }, ptr %t278 + 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 @@ -53234,56 +53289,56 @@ then5925: %t286 = load i64, ptr %t283 %t287 = load ptr, ptr %a271 store i64 0, ptr %a288 - br label %find.cond5928 -find.cond5928: + br label %find.cond5935 +find.cond5935: %t289 = load i64, ptr %a288 %t290 = icmp slt i64 %t289, %t286 - br i1 %t290, label %find.body5929, label %find.end5932 -find.body5929: + 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.hit5930, label %find.next5931 -find.hit5930: + br i1 %t296, label %find.hit5937, label %find.next5938 +find.hit5937: store i64 %t289, ptr %a285 - br label %find.end5932 -find.next5931: + br label %find.end5939 +find.next5938: %t297 = add i64 %t289, 1 store i64 %t297, ptr %a288 - br label %find.cond5928 -find.end5932: + 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 %then5933, label %endif5935 -then5933: + 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 %endif5935 -endif5935: + 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 %range5936, label %inrange5937 -range5936: - call void @finch_panic_index(ptr @.str.3911, i64 3154, i64 %t308, i64 %t310) + br i1 %t311, label %range5943, label %inrange5944 +range5943: + call void @finch_panic_index(ptr @.str.3915, i64 3154, i64 %t308, i64 %t310) unreachable -inrange5937: +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.3912, i64 1, i64 0 }, ptr %a317 + 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 @@ -53295,7 +53350,7 @@ inrange5937: 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 + 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 @@ -53305,7 +53360,7 @@ inrange5937: 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 + 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 @@ -53323,7 +53378,7 @@ inrange5937: %t353 = load %S.ast.Type, ptr %a352 %t354 = insertvalue %S.gen.Val %t348, %S.ast.Type %t353, 1 ret %S.gen.Val %t354 -endif5927: +endif5934: %t355 = load ptr, ptr %a1 %t356 = load { ptr, i64, i64 }, ptr %a2 %t357 = load %S.gen.Val, ptr %a6 @@ -53530,142 +53585,142 @@ entry: store %S.ast.Node %p4, ptr %a11 %t12 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.3915, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3919, 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.from5945 +logic.from5945: + br i1 %t16, label %logic.end5947, label %logic.rhs5946 +logic.rhs5946: %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.3920, 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.rend5948 +logic.rend5948: + br label %logic.end5947 +logic.end5947: + %t22 = phi i1 [ true, %logic.from5945 ], [ %t21, %logic.rend5948 ] 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.3921, 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.from5949 +logic.from5949: + br i1 %t30, label %logic.end5951, label %logic.rhs5950 +logic.rhs5950: %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.3922, 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.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: %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.3923, 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.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: %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.3924, 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: - %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 - %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: - %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 - %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 + %t54 = phi i1 [ true, %logic.from5957 ], [ %t53, %logic.rend5960 ] + br i1 %t54, label %then5961, label %endif5963 then5961: + %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 + %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: + %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 + %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: %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.3927, i64 59, i64 0 }) + br label %endif5970 +endif5970: %t72 = load i1, ptr %a23 %t73 = xor i1 %t72, true - br i1 %t73, label %then5964, label %endif5966 -then5964: + br i1 %t73, label %then5971, label %endif5973 +then5971: %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 %endif5973 +endif5973: + store { ptr, i64, i64 } { ptr @.str.3928, 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.3929, 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: + 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.3927, i64 5, i64 0 }, ptr %a88 + 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.3928, i64 5, i64 0 }, ptr %a93 + 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 @@ -53675,7 +53730,7 @@ endif5969: 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 + 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 @@ -53686,48 +53741,48 @@ endif5969: %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 }) + %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 -endif5956: +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.3931, i64 3, i64 0 }, ptr %a119 + 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.from5970 -logic.from5970: - br i1 %t121, label %logic.rhs5971, label %logic.end5972 -logic.rhs5971: + 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 %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.3936, 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: + 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 %then5977, label %endif5979 -then5977: + 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.3933, i64 27, i64 0 }, ptr %a136 + 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.3934, i64 6, i64 0 }, ptr %a141 + 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 @@ -53738,30 +53793,30 @@ then5977: 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 + 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.3936, i64 2, i64 0 }, ptr %a156 + 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.3937, i64 2, i64 0 }, ptr %a159 + 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 %then5980, label %endif5982 -then5980: - store { ptr, i64, i64 } { ptr @.str.3938, i64 2, i64 0 }, ptr %a156 - br label %endif5982 -endif5982: + 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.3939, i64 5, i64 0 }, ptr %a165 + 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.3940, i64 5, i64 0 }, ptr %a170 + 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 @@ -53770,25 +53825,25 @@ endif5982: 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 + 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.3942, i64 4, i64 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 -endif5979: +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.3943, i64 28, i64 0 }, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.3947, i64 28, i64 0 }, ptr %a190 store { ptr, i64, i64 } %t188, ptr %a191 call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.3944, i64 6, i64 0 }, ptr %a195 + 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 @@ -53799,7 +53854,7 @@ endif5979: 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 + 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) @@ -53807,12 +53862,12 @@ endif5979: %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 } { 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.3947, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.3951, i64 5, i64 0 }, ptr %a219 call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 %t221 = load { ptr, i64, i64 }, ptr %a209 @@ -53821,28 +53876,28 @@ endif5979: 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 + 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.3949, i64 4, i64 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 -endif5976: +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 %then5983, label %endif5985 -then5983: + 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 %endif5985 -endif5985: + 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 @@ -53853,22 +53908,22 @@ endif5985: %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: + 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.3950, i64 2, i64 0 }, ptr %t254 + 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.3951, i64 2, i64 0 }, ptr %t255 + 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.3952, i64 1, i64 0 }, ptr %t256 + 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.3953, i64 2, i64 0 }, ptr %t257 + 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.3954, i64 1, i64 0 }, ptr %t258 + 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.3955, i64 2, i64 0 }, ptr %t259 + 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 @@ -53876,17 +53931,17 @@ then5986: %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 + 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.3957, i64 3, i64 0 }, ptr %t267 + 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.3958, i64 3, i64 0 }, ptr %t268 + 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.3959, i64 3, i64 0 }, ptr %t269 + 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.3960, i64 3, i64 0 }, ptr %t270 + 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.3961, i64 3, i64 0 }, ptr %t271 + 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 @@ -53898,45 +53953,45 @@ then5986: %t280 = load i64, ptr %t277 %t281 = load ptr, ptr %a263 store i64 0, ptr %a282 - br label %find.cond5989 -find.cond5989: + br label %find.cond5996 +find.cond5996: %t283 = load i64, ptr %a282 %t284 = icmp slt i64 %t283, %t280 - br i1 %t284, label %find.body5990, label %find.end5993 -find.body5990: + 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.hit5991, label %find.next5992 -find.hit5991: + br i1 %t290, label %find.hit5998, label %find.next5999 +find.hit5998: store i64 %t283, ptr %a279 - br label %find.end5993 -find.next5992: + br label %find.end6000 +find.next5999: %t291 = add i64 %t283, 1 store i64 %t291, ptr %a282 - br label %find.cond5989 -find.end5993: + 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 %range5994, label %inrange5995 -range5994: - call void @finch_panic_index(ptr @.str.3963, i64 3194, i64 %t292, i64 %t294) + br i1 %t295, label %range6001, label %inrange6002 +range6001: + call void @finch_panic_index(ptr @.str.3967, i64 3194, i64 %t292, i64 %t294) unreachable -inrange5995: +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.3962, i64 5, i64 0 }, ptr %a300 + 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.3964, i64 1, i64 0 }, ptr %a305 + 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 @@ -53948,7 +54003,7 @@ inrange5995: 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 + 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 @@ -53958,7 +54013,7 @@ inrange5995: 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 + 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 @@ -53969,45 +54024,45 @@ inrange5995: %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 }) + %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 -endif5988: +endif5995: %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 + 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 %then5996, label %endif5998 -then5996: + br i1 %t343, label %then6003, label %endif6005 +then6003: %t344 = load i1, ptr %a23 %t345 = xor i1 %t344, true - br i1 %t345, label %then5999, label %endif6001 -then5999: + 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.3969, i64 115, i64 0 }) - br label %endif6001 -endif6001: - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a348 + 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.3971, i64 2, i64 0 }, ptr %a351 + 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 %then6002, label %endif6004 -then6002: - store { ptr, i64, i64 } { ptr @.str.3972, i64 2, i64 0 }, ptr %a348 - br label %endif6004 -endif6004: + 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.3973, i64 5, i64 0 }, ptr %a357 + 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.3974, i64 5, i64 0 }, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.3978, i64 5, i64 0 }, ptr %a362 call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) %t363 = load { ptr, i64, i64 }, ptr %a360 %t364 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -54017,7 +54072,7 @@ endif6004: 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 + 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 @@ -54028,90 +54083,90 @@ endif6004: %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 }) + %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 -endif5998: +endif6005: %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 + 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.from6005 -logic.from6005: - br i1 %t388, label %logic.rhs6006, label %logic.end6007 -logic.rhs6006: + 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.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: + 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 %endif6011 -endif6011: + 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.from6012 -logic.from6012: - br i1 %t400, label %logic.rhs6013, label %logic.end6014 -logic.rhs6013: + 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.3978, i64 4, i64 0 }, ptr %a403 + 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.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: + 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.3979, i64 4, i64 0 }, ptr %a409 + 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.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: + 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 %endif6022 -endif6022: + 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.3980, i64 5, i64 0 }, ptr %a425 + 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.3981, i64 1, i64 0 }, ptr %a430 + 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 @@ -54123,7 +54178,7 @@ endif6022: 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 + 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 @@ -54133,7 +54188,7 @@ endif6022: 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 + 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 @@ -54144,7 +54199,7 @@ endif6022: %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 }) + %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 } @@ -54166,17 +54221,17 @@ entry: %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t4 = call ptr @finch_alloc(i64 %t3) %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.3985, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.3989, 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.3990, 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.3991, 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.3992, 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.3993, 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.3994, 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 @@ -54184,80 +54239,80 @@ entry: %t15 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t16 = call ptr @finch_alloc(i64 %t15) %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - store { ptr, i64, i64 } { ptr @.str.3991, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.3995, 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.3996, 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.3997, 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.3998, 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.3999, 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.4000, 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 %then6030, label %endif6032 +then6030: %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.4001, 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.4002, 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.4003, 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.4004, 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.4005, 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.4006, i64 3, i64 0 }, ptr %t35 %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 store { ptr, i64, i64 } %t38, ptr %a26 - br label %endif6025 -endif6025: + 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.cond6026 -find.cond6026: + br label %find.cond6033 +find.cond6033: %t45 = load i64, ptr %a44 %t46 = icmp slt i64 %t45, %t42 - br i1 %t46, label %find.body6027, label %find.end6030 -find.body6027: + 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.hit6028, label %find.next6029 -find.hit6028: + br i1 %t52, label %find.hit6035, label %find.next6036 +find.hit6035: store i64 %t45, ptr %a41 - br label %find.end6030 -find.next6029: + br label %find.end6037 +find.next6036: %t53 = add i64 %t45, 1 store i64 %t53, ptr %a44 - br label %find.cond6026 -find.end6030: + 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 %range6031, label %inrange6032 -range6031: - call void @finch_panic_index(ptr @.str.4003, i64 3221, i64 %t54, i64 %t56) + br i1 %t57, label %range6038, label %inrange6039 +range6038: + call void @finch_panic_index(ptr @.str.4007, i64 3221, i64 %t54, i64 %t56) unreachable -inrange6032: +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 @@ -54337,48 +54392,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.4008, 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.from6040 +logic.from6040: + br i1 %t13, label %logic.end6042, label %logic.rhs6041 +logic.rhs6041: %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.4009, 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.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: %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 %range6047, label %inrange6048 +range6047: + call void @finch_panic_index(ptr @.str.4010, i64 3227, i64 0, i64 %t23) unreachable -inrange6041: +inrange6048: %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.4011, 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.4012, 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.4013, i64 9, i64 0 }) store { ptr, i64, i64 } %t37, ptr %a38 %t39 = load ptr, ptr %a1 %t40 = load { ptr, i64, i64 }, ptr %a32 @@ -54388,25 +54443,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.4014, 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 %then6049, label %else6050 +then6049: %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 %endif6051 +else6050: %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 %endif6051 +endif6051: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -54415,18 +54470,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 %range6052, label %inrange6053 +range6052: + call void @finch_panic_index(ptr @.str.4015, i64 3239, i64 1, i64 %t61) unreachable -inrange6046: +inrange6053: %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.4016, i64 10, i64 0 }) store { ptr, i64, i64 } %t69, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a70 @@ -54440,25 +54495,25 @@ 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.4017, 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.4018, 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: + 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.4016, i64 9, i64 0 }, ptr %a88 + 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.4017, i64 3, i64 0 }, ptr %a93 + 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 @@ -54467,7 +54522,7 @@ endif6049: 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 + 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 @@ -54476,7 +54531,7 @@ endif6049: 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 + 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 @@ -54485,25 +54540,25 @@ endif6049: 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 + 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.4021, i64 4, i64 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 -endif6039: +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 %range6050, label %inrange6051 -range6050: - call void @finch_panic_index(ptr @.str.4022, i64 3251, i64 0, i64 %t129) + br i1 %t130, label %range6057, label %inrange6058 +range6057: + call void @finch_panic_index(ptr @.str.4026, i64 3251, i64 0, i64 %t129) unreachable -inrange6051: +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 @@ -54514,11 +54569,11 @@ inrange6051: %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) + br i1 %t140, label %range6059, label %inrange6060 +range6059: + call void @finch_panic_index(ptr @.str.4027, i64 3252, i64 1, i64 %t139) unreachable -inrange6053: +inrange6060: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1 %t143 = load %S.ast.Node, ptr %t142 @@ -54526,81 +54581,81 @@ inrange6053: 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 + 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.from6054 -logic.from6054: - br i1 %t150, label %logic.end6056, label %logic.rhs6055 -logic.rhs6055: + 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.4025, i64 2, i64 0 }, ptr %a153 + 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.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: + 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.4026, i64 1, i64 0 }, ptr %a159 + 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.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: + 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.4027, i64 2, i64 0 }, ptr %a165 + 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.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: + 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.4028, i64 1, i64 0 }, ptr %a171 + 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.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: + 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.4029, i64 2, i64 0 }, ptr %a177 + 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.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: + 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 @@ -54608,7 +54663,7 @@ then6074: %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: +endif6083: %t187 = load ptr, ptr %a1 %t188 = load { ptr, i64, i64 }, ptr %a8 %t189 = load %S.gen.Val, ptr %a135 @@ -54714,25 +54769,25 @@ entry: store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4030, i64 4, i64 0 }) + %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4034, 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.4035, 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 %then6084, label %else6085 +then6084: %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 %range6087, label %inrange6088 +range6087: + call void @finch_panic_index(ptr @.str.4036, i64 3262, i64 0, i64 %t14) unreachable -inrange6081: +inrange6088: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 %t18 = load %S.ast.Type, ptr %t17 @@ -54740,32 +54795,32 @@ inrange6081: call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) %t21 = load %S.ast.Type, ptr %a20 store %S.ast.Type %t21, ptr %a5 - br label %endif6079 -else6078: + 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 %then6082, label %endif6084 -then6082: + 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.4033, i64 47, i64 0 }) - br label %endif6084 -endif6084: - br label %endif6079 -endif6079: + 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.cond6085 -each.cond6085: + 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.body6086, label %each.end6088 -each.body6086: + 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 @@ -54774,11 +54829,11 @@ each.body6086: %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 + 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 %then6089, label %else6090 -then6089: + 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) @@ -54789,20 +54844,20 @@ then6089: 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: + 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 %endif6091 -endif6091: + 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.4035, i64 27, i64 0 }) + %t62 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t59, %S.ast.Type %t60, %S.ast.Node %t61, { ptr, i64, i64 } { ptr @.str.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 @@ -54815,13 +54870,13 @@ endif6091: %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: + br label %each.step6094 +each.step6094: %t71 = load i64, ptr %a30 %t72 = add i64 %t71, 1 store i64 %t72, ptr %a30 - br label %each.cond6085 -each.end6088: + 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 @@ -54830,20 +54885,20 @@ each.end6088: 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 + 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 %then6092, label %endif6094 -then6092: + 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.4037, i64 8, i64 0 }, ptr %a88 + 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.4038, i64 2, i64 0 }, ptr %a93 + 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 @@ -54857,37 +54912,37 @@ then6092: 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 } { 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.4040, i64 1, i64 0 }, ptr %a112 + 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 %endif6094 -endif6094: + 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.cond6095 -for.cond6095: + br label %for.cond6102 +for.cond6102: %t118 = load i64, ptr %a117 %t119 = icmp slt i64 %t118, %t116 - br i1 %t119, label %for.body6096, label %for.end6098 -for.body6096: + 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.4041, i64 23, i64 0 }, ptr %a125 + 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.4042, i64 6, i64 0 }, ptr %a130 + 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 @@ -54896,7 +54951,7 @@ for.body6096: 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 + 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 @@ -54916,43 +54971,43 @@ for.body6096: %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) + br i1 %t157, label %range6106, label %inrange6107 +range6106: + call void @finch_panic_index(ptr @.str.4048, i64 3287, i64 %t154, i64 %t156) unreachable -inrange6100: +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.step6097 -for.step6097: + br label %for.step6104 +for.step6104: %t162 = load i64, ptr %a117 %t163 = add i64 %t162, 1 store i64 %t163, ptr %a117 - br label %for.cond6095 -for.end6098: + br label %for.cond6102 +for.end6105: %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 } { 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.4046, i64 3, i64 0 }, ptr %a172 + 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.4047, i64 30, i64 0 }, ptr %a179 + 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.4048, i64 6, i64 0 }, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4052, i64 6, i64 0 }, ptr %a184 call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) %t185 = load { ptr, i64, i64 }, ptr %a182 %t186 = load { ptr, i64, i64 }, ptr %a80 @@ -54961,19 +55016,19 @@ for.end6098: 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 + 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.4050, i64 30, i64 0 }, ptr %a200 + 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.4051, i64 6, i64 0 }, ptr %a205 + 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 @@ -54982,7 +55037,7 @@ for.end6098: 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 + 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) @@ -55037,40 +55092,40 @@ entry: %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4053, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4057, i64 3, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br label %logic.from6101 -logic.from6101: - br i1 %t9, label %logic.rhs6102, label %logic.end6103 -logic.rhs6102: + br label %logic.from6108 +logic.from6108: + br i1 %t9, label %logic.rhs6109, label %logic.end6110 +logic.rhs6109: %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.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: %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.4058, 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.4059, 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: + br label %endif6114 +endif6114: %t28 = load ptr, ptr %a1 %t29 = load %S.ast.Node, ptr %a2 %t30 = load i1, ptr %a3 @@ -55079,13 +55134,13 @@ endif6107: %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: + 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.4056, i64 60, i64 0 }) - br label %endif6110 -endif6110: + 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 @@ -55214,11 +55269,11 @@ 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.4057, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4061, 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 %then6118, label %endif6120 +then6118: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 @@ -55226,17 +55281,17 @@ 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.from6121 +logic.from6121: + br i1 %t16, label %logic.rhs6122, label %logic.end6123 +logic.rhs6122: %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 %panic6124, label %ok6125 +panic6124: + call void @finch_panic(ptr @.str.4062, i64 3311, ptr @.str.4063) unreachable -ok6118: +ok6125: %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24 %t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -55244,20 +55299,20 @@ ok6118: 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.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: %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 %panic6130, label %ok6131 +panic6130: + call void @finch_panic(ptr @.str.4064, i64 3312, ptr @.str.4065) unreachable -ok6124: +ok6131: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24 %t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1 %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -55265,14 +55320,14 @@ ok6124: 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.missing6132, label %map.found6133 +map.missing6132: 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.4066, i64 3312, ptr %a36) unreachable -map.found6126: +map.found6133: %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 @@ -55284,44 +55339,44 @@ 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 %then6134, label %endif6136 +then6134: %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.4067, i64 5, i64 0 }) %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 ret %S.gen.Ref %t57 -endif6129: +endif6136: %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.4068, i64 3, i64 0 }) %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 ret %S.gen.Ref %t67 -endif6122: +endif6129: %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.from6137 +logic.from6137: + br i1 %t69, label %logic.rhs6138, label %logic.end6139 +logic.rhs6138: %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 %panic6140, label %ok6141 +panic6140: + call void @finch_panic(ptr @.str.4069, i64 3319, ptr @.str.4070) unreachable -ok6134: +ok6141: %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24 %t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2 %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -55330,135 +55385,135 @@ 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.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: %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 %panic6146, label %ok6147 +panic6146: + call void @finch_panic(ptr @.str.4071, i64 3319, ptr @.str.4072) unreachable -ok6140: +ok6147: %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24 %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4069, i64 7, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4073, 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.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: %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.4074, 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.from6152 +logic.from6152: + br i1 %t94, label %logic.end6154, label %logic.rhs6153 +logic.rhs6153: %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.4075, 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.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: %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.4076, 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.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: - %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 + %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 %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.4078, 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: + 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.4076, i64 6, i64 0 }, ptr %a120 + 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 %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: + 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 %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4078, i64 31, i64 0 }, ptr %a127 + 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.4079, i64 1, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4083, i64 1, i64 0 }, ptr %a132 call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t133) %t135 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t136 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4080, i64 3, i64 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 -endif6156: +endif6163: %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: + 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 %panic6166, label %ok6167 -panic6166: - call void @finch_panic(ptr @.str.4081, i64 3328, ptr @.str.4082) + br i1 %t142, label %panic6173, label %ok6174 +panic6173: + call void @finch_panic(ptr @.str.4085, i64 3328, ptr @.str.4086) unreachable -ok6167: +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 @@ -55466,21 +55521,21 @@ ok6167: 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: + 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 %panic6172, label %ok6173 -panic6172: - call void @finch_panic(ptr @.str.4083, i64 3329, ptr @.str.4084) + br i1 %t153, label %panic6179, label %ok6180 +panic6179: + call void @finch_panic(ptr @.str.4087, i64 3329, ptr @.str.4088) unreachable -ok6173: +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 @@ -55488,14 +55543,14 @@ ok6173: 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: + 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.4085, i64 3329, ptr %a161) + call void @finch_map_missing(ptr @.str.4089, i64 3329, ptr %a161) unreachable -map.found6175: +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 @@ -55506,16 +55561,16 @@ map.found6175: 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) + br i1 %t172, label %panic6183, label %ok6184 +panic6183: + call void @finch_panic(ptr @.str.4090, i64 3330, ptr @.str.4091) unreachable -ok6177: +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.4088, i64 2, i64 0 }, ptr %a178 + 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 @@ -55523,44 +55578,44 @@ ok6177: %t182 = load i64, ptr %t174 %t183 = load ptr, ptr %t173 store i64 0, ptr %a184 - br label %find.cond6178 -find.cond6178: + br label %find.cond6185 +find.cond6185: %t185 = load i64, ptr %a184 %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body6179, label %find.end6182 -find.body6179: + 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.hit6180, label %find.next6181 -find.hit6180: + br i1 %t192, label %find.hit6187, label %find.next6188 +find.hit6187: store i64 %t185, ptr %a181 - br label %find.end6182 -find.next6181: + br label %find.end6189 +find.next6188: %t193 = add i64 %t185, 1 store i64 %t193, ptr %a184 - br label %find.cond6178 -find.end6182: + 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 %then6183, label %endif6185 -then6183: + br i1 %t196, label %then6190, label %endif6192 +then6190: %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) + br i1 %t198, label %panic6193, label %ok6194 +panic6193: + call void @finch_panic(ptr @.str.4093, i64 3331, ptr @.str.4094) unreachable -ok6187: +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.4091, i64 2, i64 0 }, ptr %a204 + 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 @@ -55573,21 +55628,21 @@ ok6187: 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) + br i1 %t212, label %panic6195, label %ok6196 +panic6195: + call void @finch_panic(ptr @.str.4096, i64 3332, ptr @.str.4097) unreachable -ok6189: +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.4094, i64 1, i64 0 }, ptr %a218 + 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.4095, i64 19, i64 0 }, ptr %a223 + 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 @@ -55604,12 +55659,12 @@ ok6189: %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: + 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.4096, i64 1, i64 0 }, ptr %a240 + 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 @@ -55621,27 +55676,27 @@ endif6185: %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: +endif6178: %t250 = load i64, ptr %a14 %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then6190, label %endif6192 -then6190: + 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 %then6193, label %endif6195 -then6193: + 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.4097, i64 1, i64 0 }, ptr %a261 + 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.4098, i64 43, i64 0 }, ptr %a266 + 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 %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -55651,27 +55706,27 @@ then6193: 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.4103, i64 10, i64 0 }, ptr %a276 call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) %t277 = load { ptr, i64, i64 }, ptr %a274 call void @finch.gen.fail(ptr %t256, %S.ast.Node %t257, { ptr, i64, i64 } %t277) - br label %endif6195 -endif6195: + 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.4100, i64 28, i64 0 }, ptr %a283 + 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 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4105, i64 1, i64 0 }, ptr %a288 call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) %t289 = load { ptr, i64, i64 }, ptr %a286 call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } %t289) - br label %endif6192 -endif6192: + 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) @@ -55686,12 +55741,12 @@ endif6192: %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 } { 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.4103, i64 1, i64 0 }, ptr %a310 + 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 @@ -55701,7 +55756,7 @@ endif6192: 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 + 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 @@ -55726,35 +55781,35 @@ endif6192: %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: +endif6120: %t342 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t343 = load { ptr, i64, i64 }, ptr %t342 store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4105, i64 6, i64 0 }, ptr %a345 + 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 %then6196, label %endif6198 -then6196: + 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 -endif6198: +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.4106, i64 5, i64 0 }, ptr %a355 + 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 %then6199, label %endif6201 -then6199: + 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 -endif6201: +endif6208: %t362 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t363 = load ptr, ptr %a1 %t364 = load %S.ast.Node, ptr %a2 @@ -55808,61 +55863,61 @@ entry: store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4108, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.4112, 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 %then6209, label %endif6211 +then6209: %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.4113, 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: + br label %endif6211 +endif6211: %t18 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.4111, i64 1, i64 0 }, ptr %a21 + 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 %then6205, label %endif6207 -then6205: + 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.4113, i64 1, i64 0 }, ptr %a28 + 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 %then6208, label %endif6210 -then6208: + 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.4115, i64 1, i64 0 }, ptr %a36 + 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 %endif6210 -endif6210: + br label %endif6217 +endif6217: %t38 = load i64, ptr %a30 %t39 = icmp slt i64 %t38, 0 - br i1 %t39, label %then6211, label %endif6213 -then6211: + 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.4116, i64 2, i64 0 }, ptr %a43 + 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 -endif6213: +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.4117, i64 3369) + 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.4118, i64 2, i64 0 }, ptr %a52 + 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 @@ -55870,14 +55925,14 @@ endif6213: %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) + 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 -endif6207: +endif6214: %t65 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t65, ptr %a66 call void @finch_str_copy(ptr %a67, ptr %a66) @@ -55900,133 +55955,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.4124, 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.from6221 +logic.from6221: + br i1 %t8, label %logic.rhs6222, label %logic.end6223 +logic.rhs6222: %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.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: %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 %panic6228, label %ok6229 +panic6228: + call void @finch_panic(ptr @.str.4125, i64 3377, ptr @.str.4126) unreachable -ok6222: +ok6229: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13 %t19 = load { ptr, i64, i64 }, ptr %t18 %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t21 = load { ptr, i64, i64 }, ptr %t20 %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) ret i64 %t22 -endif6220: +endif6227: %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.4127, 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.from6230 +logic.from6230: + br i1 %t28, label %logic.rhs6231, label %logic.end6232 +logic.rhs6231: %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 %range6233, label %inrange6234 +range6233: + call void @finch_panic_index(ptr @.str.4128, i64 3379, i64 0, i64 %t31) unreachable -inrange6227: +inrange6234: %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.4129, 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.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: %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 %range6239, label %inrange6240 +range6239: + call void @finch_panic_index(ptr @.str.4130, i64 3379, i64 0, i64 %t45) unreachable -inrange6233: +inrange6240: %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.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: %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 %range6245, label %inrange6246 +range6245: + call void @finch_panic_index(ptr @.str.4131, i64 3379, i64 0, i64 %t57) unreachable -inrange6239: +inrange6246: %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.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: %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 %range6251, label %inrange6252 +range6251: + call void @finch_panic_index(ptr @.str.4132, i64 3380, i64 0, i64 %t68) unreachable -inrange6245: +inrange6252: %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 @@ -56035,7 +56090,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: +endif6250: ret i64 -1 } @@ -56101,21 +56156,21 @@ entry: 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 %panic6253, label %ok6254 +panic6253: + call void @finch_panic(ptr @.str.4133, i64 3387, ptr @.str.4134) unreachable -ok6247: +ok6254: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = load i64, ptr %a3 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6248, label %inrange6249 -range6248: - call void @finch_panic_index(ptr @.str.4131, i64 3387, i64 %t7, i64 %t9) + br i1 %t10, label %range6255, label %inrange6256 +range6255: + call void @finch_panic_index(ptr @.str.4135, i64 3387, i64 %t7, i64 %t9) unreachable -inrange6249: +inrange6256: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -56131,43 +56186,43 @@ 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.cond6257 +find.cond6257: %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.body6258, label %find.end6261 +find.body6258: %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.hit6259, label %find.next6260 +find.hit6259: store i64 %t26, ptr %a22 - br label %find.end6254 -find.next6253: + br label %find.end6261 +find.next6260: %t34 = add i64 %t26, 1 store i64 %t34, ptr %a25 - br label %find.cond6250 -find.end6254: + br label %find.cond6257 +find.end6261: %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 %then6262, label %endif6264 +then6262: %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.4136, 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.4137, 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 @@ -56177,12 +56232,12 @@ then6255: 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 + 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.4135, i64 2, i64 0 }, ptr %a63 + 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 @@ -56190,12 +56245,12 @@ then6255: 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 + 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 %endif6257 -endif6257: + 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 @@ -56206,12 +56261,12 @@ endif6257: %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 } { 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.4138, i64 1, i64 0 }, ptr %a90 + 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 @@ -56221,7 +56276,7 @@ endif6257: 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 + 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 @@ -56229,11 +56284,11 @@ endif6257: %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) + br i1 %t106, label %range6265, label %inrange6266 +range6265: + call void @finch_panic_index(ptr @.str.4144, i64 3392, i64 %t103, i64 %t105) unreachable -inrange6259: +inrange6266: %t107 = extractvalue { ptr, i64, i64 } %t104, 0 %t108 = getelementptr inbounds i64, ptr %t107, i64 %t103 %t109 = load i64, ptr %t108 @@ -56244,27 +56299,27 @@ inrange6259: 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 + 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.4142, i64 0, i64 0 }, i64 0, i64 0) + 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 %range6260, label %inrange6261 -range6260: - call void @finch_panic_index(ptr @.str.4143, i64 3393, i64 %t121, i64 %t123) + br i1 %t124, label %range6267, label %inrange6268 +range6267: + call void @finch_panic_index(ptr @.str.4147, i64 3393, i64 %t121, i64 %t123) unreachable -inrange6261: +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.4144, i64 4, i64 0 }, 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 @@ -56529,11 +56584,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 %range6269, label %inrange6270 +range6269: + call void @finch_panic_index(ptr @.str.4149, i64 3397, i64 0, i64 %t7) unreachable -inrange6263: +inrange6270: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -56541,16 +56596,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 %then6271, label %endif6273 +then6271: %t16 = load i1, ptr %a3 - br i1 %t16, label %then6267, label %endif6269 -then6267: + br i1 %t16, label %then6274, label %endif6276 +then6274: %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.4150, i64 37, i64 0 }) + br label %endif6276 +endif6276: %t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a2 @@ -56558,17 +56613,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: +endif6273: %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 %range6277, label %inrange6278 +range6277: + call void @finch_panic_index(ptr @.str.4151, i64 3404, i64 0, i64 %t28) unreachable -inrange6271: +inrange6278: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 %t32 = load %S.ast.Node, ptr %t31 @@ -56584,8 +56639,8 @@ 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 %then6279, label %endif6281 +then6279: %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 @@ -56593,16 +56648,16 @@ then6272: call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) %t50 = load %S.ast.Type, ptr %a49 store %S.ast.Type %t50, ptr %a42 - br label %endif6274 -endif6274: + 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.4148, i64 3, i64 0 }, ptr %a54 + 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 %then6275, label %endif6277 -then6275: + 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 @@ -56612,47 +56667,47 @@ then6275: 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: + 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.4149, i64 3, i64 0 }, { ptr, i64, i64 } %t69) + %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 %endif6280 -endif6280: + 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 %then6281, label %endif6283 -then6281: + 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.4150, i64 57, i64 0 }) - br label %endif6283 -endif6283: + 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.4151, i64 12, i64 0 }, ptr %a81 + 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.4152, i64 6, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.4156, i64 6, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 %t88 = call { ptr, i64, i64 } @finch.gen.op(ptr %t78, { ptr, i64, i64 } %t87) %t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4153, i64 6, i64 0 }, ptr %a92 + 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.4154, i64 18, i64 0 }, ptr %a97 + 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 @@ -56661,11 +56716,11 @@ endif6283: %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) + br i1 %t103, label %range6291, label %inrange6292 +range6291: + call void @finch_panic_index(ptr @.str.4159, i64 3418, i64 0, i64 %t102) unreachable -inrange6285: +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 @@ -56677,18 +56732,18 @@ inrange6285: %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 + 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 %then6286, label %endif6288 -then6286: + br i1 %t117, label %then6293, label %endif6295 +then6293: %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) + br i1 %t119, label %panic6296, label %ok6297 +panic6296: + call void @finch_panic(ptr @.str.4161, i64 3421, ptr @.str.4162) unreachable -ok6290: +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 @@ -56699,11 +56754,11 @@ ok6290: %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) + br i1 %t129, label %range6298, label %inrange6299 +range6298: + call void @finch_panic_index(ptr @.str.4163, i64 3421, i64 %t126, i64 %t128) unreachable -inrange6292: +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 @@ -56712,51 +56767,51 @@ inrange6292: %t135 = load i64, ptr %t133 %t136 = load ptr, ptr %t132 store i64 0, ptr %a137 - br label %find.cond6293 -find.cond6293: + br label %find.cond6300 +find.cond6300: %t138 = load i64, ptr %a137 %t139 = icmp slt i64 %t138, %t135 - br i1 %t139, label %find.body6294, label %find.end6297 -find.body6294: + 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.4160, i64 5, i64 0 }, ptr %a143 + 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.hit6295, label %find.next6296 -find.hit6295: + br i1 %t145, label %find.hit6302, label %find.next6303 +find.hit6302: store i64 %t138, ptr %a134 - br label %find.end6297 -find.next6296: + br label %find.end6304 +find.next6303: %t146 = add i64 %t138, 1 store i64 %t146, ptr %a137 - br label %find.cond6293 -find.end6297: + br label %find.cond6300 +find.end6304: %t147 = load i64, ptr %a134 %t148 = icmp sge i64 %t147, 0 store i1 %t148, ptr %a111 - br label %endif6288 -endif6288: + br label %endif6295 +endif6295: %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t150 = load { ptr, i64, i64 }, ptr %t149 store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.4161, i64 5, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.4165, 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: + 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.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: + 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 store { ptr, i64, i64 } %t159, ptr %a160 @@ -56770,30 +56825,30 @@ then6302: %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: +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.4162, i64 6, i64 0 }, ptr %a173 + 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 %then6305, label %endif6307 -then6305: + 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.4163, i64 2, i64 0 }, ptr %a181 + 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.4164, i64 43, i64 0 }, ptr %a186 + 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 %endif6307 -endif6307: + 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 @@ -56812,87 +56867,87 @@ endif6307: 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: + 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.4165, i64 5, i64 0 }, ptr %a207 + 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 %then6308, label %endif6310 -then6308: + br i1 %t209, label %then6315, label %endif6317 +then6315: %t210 = load i1, ptr %a3 - br i1 %t210, label %then6311, label %endif6313 -then6311: + 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.4166, i64 1, i64 0 }, ptr %a216 + 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.4167, i64 26, i64 0 }, ptr %a221 + 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 %endif6313 -endif6313: + 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.4168, i64 3, i64 0 }, ptr %a226 + 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 %then6314, label %endif6316 -then6314: + 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.4169, i64 3, i64 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 -endif6316: +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.4170, i64 3, i64 0 }, ptr %a242 + 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 %then6317, label %endif6319 -then6317: + 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.4171, i64 34, i64 0 }, ptr %a250 + 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.4172, i64 1, i64 0 }, ptr %a255 + 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 %endif6319 -endif6319: + 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 %then6320, label %endif6322 -then6320: + 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.4173, i64 48, i64 0 }) - br label %endif6322 -endif6322: + 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 @@ -56905,11 +56960,11 @@ endif6322: %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) + br i1 %t273, label %range6330, label %inrange6331 +range6330: + call void @finch_panic_index(ptr @.str.4178, i64 3445, i64 0, i64 %t272) unreachable -inrange6324: +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 @@ -56917,91 +56972,91 @@ inrange6324: %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: +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.4175, i64 5, i64 0 }, ptr %a283 + 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.from6325 -logic.from6325: - br i1 %t285, label %logic.end6327, label %logic.rhs6326 -logic.rhs6326: + 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.4176, i64 3, i64 0 }, ptr %a289 + 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.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: + 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.4177, i64 3, i64 0 }, ptr %a296 + 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.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: + 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 %then6336, label %endif6338 -then6336: + 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.4178, i64 30, i64 0 }) - br label %endif6338 -endif6338: + 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.from6339 -logic.from6339: - br i1 %t305, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: + 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.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: + 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.4180, i64 1, i64 0 }, ptr %a315 + 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.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: + 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.4181, i64 53, i64 0 }) - br label %endif6349 -endif6349: + 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 @@ -57011,8 +57066,8 @@ endif6349: 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: + 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 @@ -57022,36 +57077,36 @@ then6350: %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: + 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.4182, i64 3, i64 0 }, ptr %a341 + 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 %then6353, label %endif6355 -then6353: + 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.4183, i64 4, i64 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 -endif6355: +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.4184, i64 31, i64 0 }, ptr %a357 + 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.4185, i64 3, i64 0 }, ptr %a362 + 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) @@ -57060,11 +57115,11 @@ endif6355: %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) + br i1 %t369, label %range6363, label %inrange6364 +range6363: + call void @finch_panic_index(ptr @.str.4190, i64 3463, i64 0, i64 %t368) unreachable -inrange6357: +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 @@ -57072,90 +57127,90 @@ inrange6357: %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: +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.4187, i64 5, i64 0 }, ptr %a379 + 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.from6358 -logic.from6358: - br i1 %t381, label %logic.end6360, label %logic.rhs6359 -logic.rhs6359: + 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.4188, i64 3, i64 0 }, ptr %a385 + 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.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: + 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.4189, i64 3, i64 0 }, ptr %a392 + 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.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: + 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.4190, i64 3, i64 0 }, ptr %a399 + 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 %then6369, label %endif6371 -then6369: + 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.4191, i64 37, i64 0 }, ptr %a407 + 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.4192, i64 1, i64 0 }, ptr %a412 + 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 %endif6371 -endif6371: + br label %endif6378 +endif6378: %t414 = load i1, ptr %a3 - br i1 %t414, label %then6372, label %endif6374 -then6372: + 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.4193, i64 48, i64 0 }) - br label %endif6374 -endif6374: + 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 %then6375, label %endif6377 -then6375: + 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.4194, i64 23, i64 0 }, ptr %a424 + 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.4195, i64 6, i64 0 }, ptr %a429 + 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 @@ -57166,7 +57221,7 @@ then6375: 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 + 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) @@ -57174,24 +57229,24 @@ then6375: %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) + %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.4198, i64 3, i64 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 -endif6377: +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.4199, i64 13, i64 0 }, ptr %a458 + 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.4200, i64 1, i64 0 }, ptr %a463 + 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 @@ -57202,30 +57257,30 @@ endif6377: 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 + 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.4202, i64 3, i64 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 -endif6368: +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.4203, i64 6, i64 0 }, ptr %a484 + 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 %then6378, label %endif6380 -then6378: + 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.4204, i64 21, i64 0 }, ptr %a493 + 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 @@ -57235,19 +57290,19 @@ then6378: 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 + 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 %endif6380 -endif6380: + br label %endif6387 +endif6387: %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) + br i1 %t506, label %panic6388, label %ok6389 +panic6388: + call void @finch_panic(ptr @.str.4210, i64 3481, ptr @.str.4211) unreachable -ok6382: +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 @@ -57258,11 +57313,11 @@ ok6382: %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) + br i1 %t516, label %range6390, label %inrange6391 +range6390: + call void @finch_panic_index(ptr @.str.4212, i64 3481, i64 %t513, i64 %t515) unreachable -inrange6384: +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 @@ -57278,43 +57333,43 @@ inrange6384: %t529 = load i64, ptr %t525 %t530 = load ptr, ptr %t524 store i64 0, ptr %a531 - br label %find.cond6385 -find.cond6385: + br label %find.cond6392 +find.cond6392: %t532 = load i64, ptr %a531 %t533 = icmp slt i64 %t532, %t529 - br i1 %t533, label %find.body6386, label %find.end6389 -find.body6386: + 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.hit6387, label %find.next6388 -find.hit6387: + br i1 %t539, label %find.hit6394, label %find.next6395 +find.hit6394: store i64 %t532, ptr %a528 - br label %find.end6389 -find.next6388: + br label %find.end6396 +find.next6395: %t540 = add i64 %t532, 1 store i64 %t540, ptr %a531 - br label %find.cond6385 -find.end6389: + 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 %then6390, label %endif6392 -then6390: + 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.4209, i64 11, i64 0 }, ptr %a550 + store { ptr, i64, i64 } { ptr @.str.4213, i64 11, i64 0 }, ptr %a550 store { ptr, i64, i64 } %t548, ptr %a551 call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) %t552 = load { ptr, i64, i64 }, ptr %a549 store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.4210, i64 15, i64 0 }, ptr %a555 + 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 @@ -57324,12 +57379,12 @@ then6390: 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 + 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.4212, i64 2, i64 0 }, ptr %a569 + 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 @@ -57337,22 +57392,22 @@ then6390: 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 + 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 %endif6392 -endif6392: + 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 %range6393, label %inrange6394 -range6393: - call void @finch_panic_index(ptr @.str.4214, i64 3486, i64 %t581, i64 %t583) + br i1 %t584, label %range6400, label %inrange6401 +range6400: + call void @finch_panic_index(ptr @.str.4218, i64 3486, i64 %t581, i64 %t583) unreachable -inrange6394: +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 @@ -57370,12 +57425,12 @@ inrange6394: %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 } { 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.4216, i64 1, i64 0 }, ptr %a608 + 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 @@ -57385,24 +57440,24 @@ inrange6394: call void @finch_str_concat(ptr %a612, ptr %a613, ptr %a614) %t615 = load { ptr, i64, i64 }, ptr %a612 store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4217, i64 4, i64 0 }, ptr %a618 + store { ptr, i64, i64 } { ptr @.str.4221, i64 4, i64 0 }, ptr %a618 call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) %t619 = load { ptr, i64, i64 }, ptr %a616 - call void @finch.gen.noteRef(ptr %t592, %S.ast.Node %t593, i64 %t596, i64 %t599, { ptr, i64, i64 } %t619, { ptr, i64, i64 } { ptr @.str.4218, i64 0, i64 0 }, i64 0, i64 0) + 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 %then6395, label %endif6397 -then6395: + 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.4219, i64 23, i64 0 }, ptr %a627 + store { ptr, i64, i64 } { ptr @.str.4223, i64 23, i64 0 }, ptr %a627 store { ptr, i64, i64 } %t625, ptr %a628 call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) %t629 = load { ptr, i64, i64 }, ptr %a626 store { ptr, i64, i64 } %t629, ptr %a631 - store { ptr, i64, i64 } { ptr @.str.4220, i64 6, i64 0 }, ptr %a632 + 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 @@ -57413,7 +57468,7 @@ then6395: 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 + 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 @@ -57421,11 +57476,11 @@ then6395: %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) + br i1 %t649, label %range6405, label %inrange6406 +range6405: + call void @finch_panic_index(ptr @.str.4226, i64 3489, i64 %t646, i64 %t648) unreachable -inrange6399: +inrange6406: %t650 = extractvalue { ptr, i64, i64 } %t647, 0 %t651 = getelementptr inbounds i64, ptr %t650, i64 %t646 %t652 = load i64, ptr %t651 @@ -57450,17 +57505,17 @@ inrange6399: %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: +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.4223, i64 13, i64 0 }, ptr %a678 + store { ptr, i64, i64 } { ptr @.str.4227, i64 13, i64 0 }, ptr %a678 store { ptr, i64, i64 } %t676, ptr %a679 call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) %t680 = load { ptr, i64, i64 }, ptr %a677 store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.4224, i64 1, i64 0 }, ptr %a683 + 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 @@ -57471,7 +57526,7 @@ endif6397: 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 + 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 @@ -57479,11 +57534,11 @@ endif6397: %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) + br i1 %t700, label %range6407, label %inrange6408 +range6407: + call void @finch_panic_index(ptr @.str.4230, i64 3492, i64 %t697, i64 %t699) unreachable -inrange6401: +inrange6408: %t701 = extractvalue { ptr, i64, i64 } %t698, 0 %t702 = getelementptr inbounds i64, ptr %t701, i64 %t697 %t703 = load i64, ptr %t702 @@ -57509,20 +57564,20 @@ inrange6401: %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: + 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.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: + 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 @@ -57535,8 +57590,8 @@ then6406: %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: + 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 @@ -57688,11 +57743,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 %range6409, label %inrange6410 -range6409: - call void @finch_panic_index(ptr @.str.4227, i64 3501, i64 0, i64 %t7) + br i1 %t8, label %range6416, label %inrange6417 +range6416: + call void @finch_panic_index(ptr @.str.4231, i64 3501, i64 0, i64 %t7) unreachable -inrange6410: +inrange6417: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -57708,8 +57763,8 @@ inrange6410: 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: + 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 @@ -57717,16 +57772,16 @@ then6411: 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: + 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.4228, i64 3, i64 0 }, ptr %a33 + 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 %then6414, label %endif6416 -then6414: + 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 @@ -57734,36 +57789,36 @@ then6414: %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: +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 %range6417, label %inrange6418 -range6417: - call void @finch_panic_index(ptr @.str.4229, i64 3509, i64 1, i64 %t46) + br i1 %t47, label %range6424, label %inrange6425 +range6424: + call void @finch_panic_index(ptr @.str.4233, i64 3509, i64 1, i64 %t46) unreachable -inrange6418: +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.4230, i64 3, i64 0 }) + %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 %range6419, label %inrange6420 -range6419: - call void @finch_panic_index(ptr @.str.4231, i64 3509, i64 1, i64 %t55) + br i1 %t56, label %range6426, label %inrange6427 +range6426: + call void @finch_panic_index(ptr @.str.4235, i64 3509, i64 1, i64 %t55) unreachable -inrange6420: +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.4232, i64 8, i64 0 }) + %t60 = call %S.gen.Val @finch.gen.coerce(ptr %t42, %S.gen.Val %t51, %S.ast.Type %t52, %S.ast.Node %t59, { ptr, i64, i64 } { ptr @.str.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) @@ -57772,16 +57827,16 @@ inrange6420: %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 + 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 %then6421, label %endif6423 -then6421: - store { ptr, i64, i64 } { ptr @.str.4234, i64 0, i64 0 }, ptr %a72 + 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 %then6424, label %else6425 -then6424: + 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 @@ -57789,15 +57844,15 @@ then6424: 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: + 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 %endif6426 -endif6426: + 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 @@ -57810,12 +57865,12 @@ endif6426: %t93 = load ptr, ptr %a1 %t94 = load %S.ast.Type, ptr %a21 %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4235, i64 23, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4239, 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 + 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 @@ -57824,7 +57879,7 @@ endif6426: 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 + 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 @@ -57844,11 +57899,11 @@ endif6426: %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) + br i1 %t129, label %range6434, label %inrange6435 +range6434: + call void @finch_panic_index(ptr @.str.4242, i64 3519, i64 0, i64 %t128) unreachable -inrange6428: +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 @@ -57858,26 +57913,26 @@ inrange6428: %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: +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.4239, i64 3, i64 0 }, ptr %a141 + 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 %then6429, label %endif6431 -then6429: + 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 %then6432, label %endif6434 -then6432: + 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.4240, i64 57, i64 0 }) - br label %endif6434 -endif6434: + 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 @@ -57887,25 +57942,25 @@ endif6434: 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: + 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.4241, i64 3, i64 0 }, { ptr, i64, i64 } %t162) + %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 %endif6437 -endif6437: + 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 %range6438, label %inrange6439 -range6438: - call void @finch_panic_index(ptr @.str.4242, i64 3529, i64 0, i64 %t166) + br i1 %t167, label %range6445, label %inrange6446 +range6445: + call void @finch_panic_index(ptr @.str.4246, i64 3529, i64 0, i64 %t166) unreachable -inrange6439: +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 @@ -57918,12 +57973,12 @@ inrange6439: %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 } { 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.4244, i64 6, i64 0 }, ptr %a186 + 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 @@ -57932,7 +57987,7 @@ inrange6439: 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.4245, i64 6, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4249, 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 @@ -57949,60 +58004,60 @@ inrange6439: %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: +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.4246, i64 5, i64 0 }, ptr %a213 + 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.from6440 -logic.from6440: - br i1 %t215, label %logic.rhs6441, label %logic.end6442 -logic.rhs6441: + 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.4247, i64 3, i64 0 }, ptr %a219 + 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.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: + 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.4248, i64 46, i64 0 }, ptr %a228 + 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 %endif6446 -endif6446: - %t231 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4249, i64 4, i64 0 }) + 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.4250, i64 5, i64 0 }, ptr %a236 + 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 %then6447, label %endif6449 -then6447: + 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 %range6450, label %inrange6451 -range6450: - call void @finch_panic_index(ptr @.str.4251, i64 3537, i64 0, i64 %t241) + br i1 %t242, label %range6457, label %inrange6458 +range6457: + call void @finch_panic_index(ptr @.str.4255, i64 3537, i64 0, i64 %t241) unreachable -inrange6451: +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 @@ -58010,51 +58065,51 @@ inrange6451: 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: + br label %endif6456 +endif6456: %t249 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t250 = load { ptr, i64, i64 }, ptr %t249 store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4256, i64 3, i64 0 }, ptr %a252 %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) %t254 = icmp ne i32 %t253, 0 - br label %logic.from6452 -logic.from6452: - br i1 %t254, label %logic.rhs6453, label %logic.end6454 -logic.rhs6453: + 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.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: + 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 %then6459, label %endif6461 -then6459: + 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.4253, i64 44, i64 0 }) - br label %endif6461 -endif6461: + 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.4254, i64 29, i64 0 }, ptr %a267 + 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.4255, i64 1, i64 0 }, ptr %a272 + 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 %endif6458 -endif6458: + 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 @@ -58064,24 +58119,24 @@ endif6458: 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: + 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.4256, i64 17, i64 0 }, { ptr, i64, i64 } %t286) + %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 %endif6464 -endif6464: + br label %endif6471 +endif6471: %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 } { 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.4258, i64 3, i64 0 }, ptr %a296 + 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) @@ -58093,12 +58148,12 @@ endif6464: 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 } { 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.4260, i64 3, i64 0 }, ptr %a312 + 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) @@ -58107,12 +58162,12 @@ endif6464: %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 } { 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.4262, i64 6, i64 0 }, ptr %a326 + 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 @@ -58121,7 +58176,7 @@ endif6464: 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 + 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 @@ -58133,8 +58188,8 @@ endif6464: 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: + 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 @@ -58148,7 +58203,7 @@ then6465: %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: +endif6474: %t358 = load ptr, ptr %a1 %t359 = load ptr, ptr %a1 %t360 = load %S.ast.Type, ptr %a232 @@ -58170,20 +58225,20 @@ endif6467: %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: + 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.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: + 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 @@ -58196,8 +58251,8 @@ then6472: %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: + 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 @@ -58253,14 +58308,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.cond6482 +each.cond6482: %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.body6483, label %each.end6485 +each.body6483: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -58268,43 +58323,43 @@ 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 %then6486, label %endif6488 +then6486: %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.4268, 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.4269, 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: + 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.cond6475 -each.end6478: + 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 %then6482, label %endif6484 -then6482: + 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.4266, i64 1, i64 0 }, ptr %a45 + 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.4267, i64 8, i64 0 }, ptr %a50 + 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 @@ -58315,7 +58370,7 @@ then6482: 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 + 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 @@ -58326,8 +58381,8 @@ then6482: 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: + br label %endif6491 +endif6491: ret void } @@ -58343,7 +58398,7 @@ entry: %t5 = load ptr, ptr %a1 %t6 = load %S.ast.Node, ptr %a2 %t7 = call %S.gen.Val @finch.gen.expr(ptr %t5, %S.ast.Node %t6) - %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4269, i64 3, i64 0 }) + %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4273, 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) @@ -58355,7 +58410,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.4274, i64 17, i64 0 }) ret { ptr, i64, i64 } %t3 } @@ -58376,50 +58431,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.4275, 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 %then6492, label %endif6494 +then6492: + ret { ptr, i64, i64 } { ptr @.str.4276, i64 3, i64 0 } +endif6494: %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.4277, 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 %then6495, label %endif6497 +then6495: + ret { ptr, i64, i64 } { ptr @.str.4278, i64 5, i64 0 } +endif6497: %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.4279, 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.4280, 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.4281, 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.4282, 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.4283, 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.4284, 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.4285, 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.4286, 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.4287, 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.4288, 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.4289, 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.4290, 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.4291, 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 @@ -58430,38 +58485,38 @@ 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.cond6498 +find.cond6498: %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.body6499, label %find.end6502 +find.body6499: %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.hit6500, label %find.next6501 +find.hit6500: store i64 %t37, ptr %a33 - br label %find.end6495 -find.next6494: + br label %find.end6502 +find.next6501: %t45 = add i64 %t37, 1 store i64 %t45, ptr %a36 - br label %find.cond6491 -find.end6495: + br label %find.cond6498 +find.end6502: %t46 = load i64, ptr %a33 %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then6496, label %endif6498 -then6496: + br i1 %t47, label %then6503, label %endif6505 +then6503: %t48 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t48, ptr %a49 call void @finch_str_copy(ptr %a50, ptr %a49) %t51 = load { ptr, i64, i64 }, ptr %a50 ret { ptr, i64, i64 } %t51 -endif6498: - ret { ptr, i64, i64 } { ptr @.str.4288, i64 0, i64 0 } +endif6505: + ret { ptr, i64, i64 } { ptr @.str.4292, i64 0, i64 0 } } define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -58708,11 +58763,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 %range6506, label %inrange6507 +range6506: + call void @finch_panic_index(ptr @.str.4293, i64 3606, i64 0, i64 %t11) unreachable -inrange6500: +inrange6507: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 0 %t15 = load %S.ast.Node, ptr %t14 @@ -58727,42 +58782,42 @@ 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 %then6508, label %endif6510 +then6508: %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: +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.4290, i64 3, i64 0 }, ptr %a34 + 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.from6504 -logic.from6504: - br i1 %t36, label %logic.rhs6505, label %logic.end6506 -logic.rhs6505: + 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.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: + 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 %panic6511, label %ok6512 -panic6511: - call void @finch_panic(ptr @.str.4291, i64 3611, ptr @.str.4292) + br i1 %t41, label %panic6518, label %ok6519 +panic6518: + call void @finch_panic(ptr @.str.4295, i64 3611, ptr @.str.4296) unreachable -ok6512: +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 @@ -58771,39 +58826,39 @@ ok6512: 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: + 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.4293, i64 17, i64 0 }) + %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.4294, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4295, i64 15, i64 0 }, { ptr, i64, i64 } %t55) + 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 %then6517, label %endif6519 -then6517: + 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.4296, i64 3, i64 0 }) + %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 %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) + 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.4299, i64 32, i64 0 }, ptr %a68 + 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.4300, i64 6, i64 0 }, ptr %a73 + 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 @@ -58812,7 +58867,7 @@ then6517: 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 + 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 @@ -58821,48 +58876,48 @@ then6517: 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 + 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.4303, i64 12, i64 0 }, ptr %a98 + 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.4304, i64 3, i64 0 }, ptr %a103 + 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 %panic6520, label %ok6521 -panic6520: - call void @finch_panic(ptr @.str.4305, i64 3619, ptr @.str.4306) + br i1 %t107, label %panic6527, label %ok6528 +panic6527: + call void @finch_panic(ptr @.str.4309, i64 3619, ptr @.str.4310) unreachable -ok6521: +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.4307, i64 17, i64 0 }, { ptr, i64, i64 } %t110) + %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 %panic6522, label %ok6523 -panic6522: - call void @finch_panic(ptr @.str.4308, i64 3620, ptr @.str.4309) + br i1 %t113, label %panic6529, label %ok6530 +panic6529: + call void @finch_panic(ptr @.str.4312, i64 3620, ptr @.str.4313) unreachable -ok6523: +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.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 }) + %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 @@ -58872,23 +58927,23 @@ ok6523: %t126 = load %S.ast.Type, ptr %a125 %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 ret %S.gen.Val %t127 -endif6519: +endif6526: %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 }) + %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.4313, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4314, i64 3, i64 0 }, { ptr, i64, i64 } %t132) + 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.4315, i64 34, i64 0 }, ptr %a138 + 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.4316, i64 6, i64 0 }, ptr %a143 + 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 @@ -58897,7 +58952,7 @@ endif6519: 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 + 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 @@ -58906,48 +58961,48 @@ endif6519: 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 + 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.4319, i64 12, i64 0 }, ptr %a168 + 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.4320, i64 3, i64 0 }, ptr %a173 + 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 %panic6524, label %ok6525 -panic6524: - call void @finch_panic(ptr @.str.4321, i64 3626, ptr @.str.4322) + br i1 %t177, label %panic6531, label %ok6532 +panic6531: + call void @finch_panic(ptr @.str.4325, i64 3626, ptr @.str.4326) unreachable -ok6525: +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.4323, i64 17, i64 0 }, { ptr, i64, i64 } %t180) + %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 %panic6526, label %ok6527 -panic6526: - call void @finch_panic(ptr @.str.4324, i64 3627, ptr @.str.4325) + br i1 %t183, label %panic6533, label %ok6534 +panic6533: + call void @finch_panic(ptr @.str.4328, i64 3627, ptr @.str.4329) unreachable -ok6527: +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.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 }) + %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 @@ -58957,45 +59012,45 @@ ok6527: %t196 = load %S.ast.Type, ptr %a195 %t197 = insertvalue %S.gen.Val %t192, %S.ast.Type %t196, 1 ret %S.gen.Val %t197 -endif6516: +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.4328, i64 3, i64 0 }, ptr %a201 + 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.from6528 -logic.from6528: - br i1 %t203, label %logic.rhs6529, label %logic.end6530 -logic.rhs6529: + 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.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: + 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 %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 %panic6542, label %ok6543 +panic6542: + call void @finch_panic(ptr @.str.4333, i64 3631, ptr @.str.4334) unreachable -ok6536: +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 %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4331, i64 3631, i64 %t212, i64 %t214) + br i1 %t215, label %range6544, label %inrange6545 +range6544: + call void @finch_panic_index(ptr @.str.4335, i64 3631, i64 %t212, i64 %t214) unreachable -inrange6538: +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 @@ -59003,18 +59058,18 @@ inrange6538: 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: + 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.4332, i64 31, i64 0 }, ptr %a228 + 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.4333, i64 6, i64 0 }, ptr %a233 + 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 @@ -59023,7 +59078,7 @@ then6539: 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 + 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 @@ -59035,14 +59090,14 @@ then6539: 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 + 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.4336, i64 3, i64 0 }) + %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 @@ -59052,17 +59107,17 @@ then6539: %t267 = load %S.ast.Type, ptr %a266 %t268 = insertvalue %S.gen.Val %t263, %S.ast.Type %t267, 1 ret %S.gen.Val %t268 -endif6541: +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.4337, i64 36, i64 0 }, ptr %a274 + 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.4338, i64 6, i64 0 }, ptr %a279 + 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 @@ -59071,7 +59126,7 @@ endif6541: 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 + 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 @@ -59083,14 +59138,14 @@ endif6541: 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 + 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.4341, i64 5, i64 0 }) + %t306 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4345, i64 5, i64 0 }) %t307 = load %S.ast.Type, ptr %a3 %t308 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t304, { ptr, i64, i64 } %t305, %S.ast.Type %t306, %S.ast.Type %t307) %t309 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t308, 0 @@ -59100,30 +59155,30 @@ endif6541: %t313 = load %S.ast.Type, ptr %a312 %t314 = insertvalue %S.gen.Val %t309, %S.ast.Type %t313, 1 ret %S.gen.Val %t314 -endif6534: +endif6541: %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: + 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.4342, i64 4, i64 0 }, ptr %a320 + 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.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: + 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.4343, i64 3, i64 0 }) + %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 @@ -59133,45 +59188,45 @@ then6546: %t334 = load %S.ast.Type, ptr %a333 %t335 = insertvalue %S.gen.Val %t330, %S.ast.Type %t334, 1 ret %S.gen.Val %t335 -endif6548: +endif6555: %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: + 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.4344, i64 4, i64 0 }, ptr %a341 + 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.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 + %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 @@ -59185,24 +59240,24 @@ then6560: %t364 = load %S.ast.Type, ptr %a363 %t365 = insertvalue %S.gen.Val %t360, %S.ast.Type %t364, 1 ret %S.gen.Val %t365 -endif6562: +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.4346, i64 4, i64 0 }, ptr %a369 + 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 %then6563, label %endif6565 -then6563: + 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.4347, i64 8, i64 0 }, ptr %a376 + 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.4348, i64 4, i64 0 }, ptr %a381 + 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 @@ -59220,34 +59275,34 @@ then6563: %t395 = load %S.ast.Type, ptr %a394 %t396 = insertvalue %S.gen.Val %t391, %S.ast.Type %t395, 1 ret %S.gen.Val %t396 -endif6565: +endif6572: %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: + 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.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 + 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 %then6573, label %endif6575 -then6573: - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a402 - br label %endif6575 -endif6575: + 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.4351, i64 1, i64 0 }, ptr %a409 + 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 @@ -59258,7 +59313,7 @@ endif6575: 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 + 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 @@ -59268,7 +59323,7 @@ endif6575: 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 + 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 @@ -59286,17 +59341,17 @@ endif6575: %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: +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 %then6576, label %endif6578 -then6576: + 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 %then6579, label %endif6581 -then6579: + 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 @@ -59310,11 +59365,11 @@ then6579: %t460 = load %S.ast.Type, ptr %a459 %t461 = insertvalue %S.gen.Val %t456, %S.ast.Type %t460, 1 ret %S.gen.Val %t461 -endif6581: +endif6588: %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: + 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 @@ -59328,38 +59383,38 @@ then6582: %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: +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.4354, i64 4, i64 0 }, ptr %a479 + 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.from6585 -logic.from6585: - br i1 %t481, label %logic.rhs6586, label %logic.end6587 -logic.rhs6586: + 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.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: + 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.4355, i64 8, i64 0 }, ptr %a490 + 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 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.4360, i64 1, i64 0 }, ptr %a495 call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) %t496 = load { ptr, i64, i64 }, ptr %a493 %t497 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 @@ -59369,7 +59424,7 @@ then6589: 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 + 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) @@ -59380,45 +59435,45 @@ then6589: %t512 = load %S.ast.Type, ptr %a511 %t513 = insertvalue %S.gen.Val %t508, %S.ast.Type %t512, 1 ret %S.gen.Val %t513 -endif6591: +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.4358, i64 3, i64 0 }, ptr %a517 + 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.from6592 -logic.from6592: - br i1 %t519, label %logic.rhs6593, label %logic.end6594 -logic.rhs6593: + 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 %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 + 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.from6595 -logic.from6595: - br i1 %t525, label %logic.end6597, label %logic.rhs6596 -logic.rhs6596: + 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.4360, i64 4, i64 0 }, ptr %a529 + 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.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: + 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: %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 @@ -59431,39 +59486,39 @@ then6600: %t543 = load %S.ast.Type, ptr %a542 %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 ret %S.gen.Val %t544 -endif6602: +endif6609: %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.4365, i64 3, i64 0 }, ptr %a548 %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) %t550 = icmp ne i32 %t549, 0 - br label %logic.from6603 -logic.from6603: - br i1 %t550, label %logic.rhs6604, label %logic.end6605 -logic.rhs6604: + br label %logic.from6610 +logic.from6610: + br i1 %t550, label %logic.rhs6611, label %logic.end6612 +logic.rhs6611: %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.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: %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 }) + %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.4362, i64 13, i64 0 }, ptr %a562 + 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.4364, i64 7, i64 0 }, ptr %a567 + 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) @@ -59474,35 +59529,35 @@ then6607: %t574 = load %S.ast.Type, ptr %a573 %t575 = insertvalue %S.gen.Val %t570, %S.ast.Type %t574, 1 ret %S.gen.Val %t575 -endif6609: +endif6616: %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: + 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.4365, i64 3, i64 0 }, ptr %a581 + 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.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: + 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.4366, i64 13, i64 0 }, ptr %a589 + 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.4367, i64 4, i64 0 }, ptr %a594 + 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 @@ -59520,67 +59575,67 @@ then6614: %t608 = load %S.ast.Type, ptr %a607 %t609 = insertvalue %S.gen.Val %t604, %S.ast.Type %t608, 1 ret %S.gen.Val %t609 -endif6616: +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.4368, i64 3, i64 0 }, ptr %a613 + 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.from6617 -logic.from6617: - br i1 %t615, label %logic.rhs6618, label %logic.end6619 -logic.rhs6618: + 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.4369, i64 3, i64 0 }, ptr %a619 + 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.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: + 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 %range6624, label %inrange6625 -range6624: - call void @finch_panic_index(ptr @.str.4370, i64 3678, i64 0, i64 %t626) + br i1 %t627, label %range6631, label %inrange6632 +range6631: + call void @finch_panic_index(ptr @.str.4374, i64 3678, i64 0, i64 %t626) unreachable -inrange6625: +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.4371, i64 70, i64 0 }) - br label %endif6623 -endif6623: + 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 %range6626, label %inrange6627 -range6626: - call void @finch_panic_index(ptr @.str.4372, i64 3680, i64 0, i64 %t634) + br i1 %t635, label %range6633, label %inrange6634 +range6633: + call void @finch_panic_index(ptr @.str.4376, i64 3680, i64 0, i64 %t634) unreachable -inrange6627: +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.4373, i64 11, i64 0 }, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4377, i64 11, i64 0 }, ptr %a642 store { ptr, i64, i64 } %t640, ptr %a643 call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) %t644 = load { ptr, i64, i64 }, ptr %a641 store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.4374, i64 6, i64 0 }, ptr %a647 + 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 @@ -59620,18 +59675,18 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4379, 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 %then6635, label %endif6637 +then6635: %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 %panic6638, label %ok6639 +panic6638: + call void @finch_panic(ptr @.str.4380, i64 3713, ptr @.str.4381) unreachable -ok6632: +ok6639: %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15 %t12 = load ptr, ptr %a1 %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -59642,25 +59697,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 %range6640, label %inrange6641 +range6640: + call void @finch_panic_index(ptr @.str.4382, i64 3713, i64 %t17, i64 %t19) unreachable -inrange6634: +inrange6641: %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: +endif6637: %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.4383, 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 %then6642, label %endif6644 +then6642: %t31 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t32 = load i64, ptr %t31 %t33 = load ptr, ptr %a1 @@ -59668,73 +59723,73 @@ 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 %range6645, label %inrange6646 +range6645: + call void @finch_panic_index(ptr @.str.4384, i64 3716, i64 0, i64 %t36) unreachable -inrange6639: +inrange6646: %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: +endif6644: %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.4385, 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.from6647 +logic.from6647: + br i1 %t48, label %logic.end6649, label %logic.rhs6648 +logic.rhs6648: %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.4386, 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.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: ret i64 8 -endif6646: +endif6653: %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.4387, 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 %then6654, label %endif6656 +then6654: ret i64 8 -endif6649: +endif6656: %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.4388, 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 %then6657, label %endif6659 +then6657: ret i64 4 -endif6652: +endif6659: %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.4389, 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 %then6660, label %endif6662 +then6660: ret i64 1 -endif6655: +endif6662: %t74 = load %S.ast.Type, ptr %a2 %t75 = call i64 @finch.gen.bitsOf(%S.ast.Type %t74) %t76 = sdiv i64 %t75, 8 @@ -59781,18 +59836,18 @@ entry: %t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.4386, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4390, 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 %then6663, label %else6664 +then6663: %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 %panic6666, label %ok6667 +panic6666: + call void @finch_panic(ptr @.str.4391, i64 3737, ptr @.str.4392) unreachable -ok6660: +ok6667: %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15 %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -59803,11 +59858,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 %range6668, label %inrange6669 +range6668: + call void @finch_panic_index(ptr @.str.4393, i64 3737, i64 %t19, i64 %t21) unreachable -inrange6662: +inrange6669: %t23 = extractvalue { ptr, i64, i64 } %t20, 0 %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i64 %t19 %t25 = load %S.gen.StructDef, ptr %t24 @@ -59819,23 +59874,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.cond6670 +for.cond6670: %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.body6671, label %for.end6673 +for.body6671: %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 %range6674, label %inrange6675 +range6674: + call void @finch_panic_index(ptr @.str.4394, i64 3739, i64 %t38, i64 %t40) unreachable -inrange6668: +inrange6675: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 %t38 %t44 = load %S.ast.Type, ptr %t43 @@ -59845,11 +59900,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 %range6676, label %inrange6677 +range6676: + call void @finch_panic_index(ptr @.str.4395, i64 3739, i64 %t47, i64 %t49) unreachable -inrange6670: +inrange6677: %t51 = extractvalue { ptr, i64, i64 } %t48, 0 %t52 = getelementptr inbounds i64, ptr %t51, i64 %t47 %t53 = load i64, ptr %t52 @@ -59857,14 +59912,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.cond6678 +each.cond6678: %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.body6679, label %each.end6681 +each.body6679: %t62 = load ptr, ptr %a56 %t63 = getelementptr inbounds %S.gen.Leaf, ptr %t62, i64 %t60 %t64 = load %S.gen.Leaf, ptr %t63 @@ -59878,40 +59933,40 @@ 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.step6680 +each.step6680: %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.cond6678 +each.end6681: + br label %for.step6672 +for.step6672: %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.cond6670 +for.end6673: + br label %endif6665 +else6664: %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.4396, 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 %then6682, label %else6683 +then6682: %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 %range6685, label %inrange6686 +range6685: + call void @finch_panic_index(ptr @.str.4397, i64 3744, i64 0, i64 %t85) unreachable -inrange6679: +inrange6686: %t87 = extractvalue { ptr, i64, i64 } %t84, 0 %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i64 0 %t89 = load %S.ast.Type, ptr %t88 @@ -59920,22 +59975,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.cond6687 +for.cond6687: %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.body6688, label %for.end6690 +for.body6688: %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 %range6691, label %inrange6692 +range6691: + call void @finch_panic_index(ptr @.str.4398, i64 3746, i64 0, i64 %t100) unreachable -inrange6685: +inrange6692: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -59947,14 +60002,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.cond6693 +each.cond6693: %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.body6694, label %each.end6696 +each.body6694: %t117 = load ptr, ptr %a111 %t118 = getelementptr inbounds %S.gen.Leaf, ptr %t117, i64 %t115 %t119 = load %S.gen.Leaf, ptr %t118 @@ -59968,22 +60023,22 @@ 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.step6695 +each.step6695: %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.cond6693 +each.end6696: + br label %for.step6689 +for.step6689: %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.cond6687 +for.end6690: + br label %endif6684 +else6683: %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 @@ -59997,7 +60052,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.4399, 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 @@ -60008,10 +60063,10 @@ 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 %endif6684 +endif6684: + br label %endif6665 +endif6665: %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) @@ -60104,28 +60159,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.from6697 +logic.from6697: + br i1 %t17, label %logic.rhs6698, label %logic.end6699 +logic.rhs6698: %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.rend6700 +logic.rend6700: + br label %logic.end6699 +logic.end6699: + %t21 = phi i1 [ false, %logic.from6697 ], [ %t20, %logic.rend6700 ] store i1 %t21, ptr %a22 store i64 0, ptr %a23 - br label %each.cond6694 -each.cond6694: + br label %each.cond6701 +each.cond6701: %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.body6702, label %each.end6704 +each.body6702: %t28 = load ptr, ptr %a14 %t29 = getelementptr inbounds %S.gen.Leaf, ptr %t28, i64 %t26 %t30 = load %S.gen.Leaf, ptr %t29 @@ -60133,77 +60188,77 @@ 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.from6705 +logic.from6705: + br i1 %t34, label %logic.end6707, label %logic.rhs6706 +logic.rhs6706: %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 %range6708, label %inrange6709 +range6708: + call void @finch_panic_index(ptr @.str.4400, i64 3763, i64 0, i64 %t38) unreachable -inrange6702: +inrange6709: %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.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: store i1 false, ptr %a22 - br label %endif6706 -endif6706: - br label %each.step6696 -each.step6696: + br label %endif6713 +endif6713: + br label %each.step6703 +each.step6703: %t46 = load i64, ptr %a23 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a23 - br label %each.cond6694 -each.end6697: + br label %each.cond6701 +each.end6704: %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 %then6714, label %endif6716 +then6714: + store { ptr, i64, i64 } { ptr @.str.4401, 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 %range6717, label %inrange6718 +range6717: + call void @finch_panic_index(ptr @.str.4402, i64 3769, i64 0, i64 %t51) unreachable -inrange6711: +inrange6718: %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: + 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.4400, i64 6, i64 0 }, ptr %t57 + 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.4401, i64 1, i64 0 }, ptr %a65 + 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.4402, i64 3, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4406, i64 3, i64 0 }, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 %t72 = load { ptr, i64, i64 }, ptr %a49 @@ -60212,7 +60267,7 @@ endif6714: 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 + 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 @@ -60224,14 +60279,14 @@ endif6714: store i64 %t82, ptr %t59 store { ptr, i64, i64 } zeroinitializer, ptr %a85 store i64 0, ptr %a86 - br label %each.cond6715 -each.cond6715: + 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.body6716, label %each.end6718 -each.body6716: + 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 @@ -60248,23 +60303,23 @@ each.body6716: %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: + br label %each.step6724 +each.step6724: %t104 = load i64, ptr %a86 %t105 = add i64 %t104, 1 store i64 %t105, ptr %a86 - br label %each.cond6715 -each.end6718: + br label %each.cond6722 +each.end6725: %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 + 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.4404, i64 2, i64 0 }, ptr %a111 + 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.4406, i64 2, i64 0 }, ptr %a116 + 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 @@ -60274,25 +60329,25 @@ each.end6718: call void @finch.copy.S_gen_Abi(ptr %a121, ptr %a120) %t122 = load %S.gen.Abi, ptr %a121 ret %S.gen.Abi %t122 -endif6709: +endif6716: %t123 = load i64, ptr %a4 %t124 = icmp sgt i64 %t123, 16 - br i1 %t124, label %then6719, label %endif6721 -then6719: + 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.4407, i64 8, i64 0 }, ptr %t125 + 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 -endif6721: +endif6728: %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 + 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 %then6722, label %else6723 -then6722: + 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 @@ -60300,16 +60355,16 @@ then6722: 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 { 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.4410, i64 4, i64 0 }, ptr %t139 - br label %endif6724 -else6723: + 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 %then6725, label %else6726 -then6725: + 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 @@ -60317,20 +60372,20 @@ then6725: 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 { 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.4412, i64 1, i64 0 }, ptr %a153 + 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 %endif6727 -else6726: + 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 @@ -60338,14 +60393,14 @@ else6726: 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 { 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.4414, i64 9, i64 0 }, ptr %t163 - br label %endif6727 -endif6727: - br label %endif6724 -endif6724: + 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) @@ -60406,29 +60461,29 @@ entry: %a294 = alloca %S.gen.Abi, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4415, i64 6, i64 0 }, 0 + %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4419, 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.4420, 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 %then6735, label %endif6737 +then6735: %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: +endif6737: %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) + br i1 %t16, label %panic6738, label %ok6739 +panic6738: + call void @finch_panic(ptr @.str.4421, i64 3804, ptr @.str.4422) unreachable -ok6732: +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 @@ -60439,11 +60494,11 @@ ok6732: %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) + br i1 %t26, label %range6740, label %inrange6741 +range6740: + call void @finch_panic_index(ptr @.str.4423, i64 3804, i64 %t23, i64 %t25) unreachable -inrange6734: +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 @@ -60459,26 +60514,26 @@ inrange6734: %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 %t39 = load i64, ptr %t38 %t40 = icmp sgt i64 %t39, 8 - br i1 %t40, label %then6735, label %endif6737 -then6735: + 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 %endif6737 -endif6737: + br label %endif6744 +endif6744: %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) + br i1 %t45, label %panic6745, label %ok6746 +panic6745: + call void @finch_panic(ptr @.str.4424, i64 3810, ptr @.str.4425) unreachable -ok6739: +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 %then6740, label %endif6742 -then6740: + 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 @@ -60487,65 +60542,65 @@ then6740: %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: +endif6749: %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) + br i1 %t57, label %panic6750, label %ok6751 +panic6750: + call void @finch_panic(ptr @.str.4426, i64 3813, ptr @.str.4427) unreachable -ok6744: +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 %then6745, label %endif6747 -then6745: + br i1 %t60, label %then6752, label %endif6754 +then6752: %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: + 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.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: + 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.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: + 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.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: + 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.4424, i64 6, i64 0 }, ptr %t72 + 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.4425, i64 1, i64 0 }, ptr %a80 + 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 @@ -60560,11 +60615,11 @@ then6760: %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 %range6770, label %inrange6771 +range6770: + call void @finch_panic_index(ptr @.str.4430, i64 3819, i64 0, i64 %t89) unreachable -inrange6764: +inrange6771: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0 %t93 = load { ptr, i64, i64 }, ptr %t92 @@ -60573,41 +60628,41 @@ inrange6764: call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif6762 -else6761: + br label %endif6769 +else6768: %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: + 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 -endif6747: +endif6754: %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: + 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.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: + 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.4428, i64 6, i64 0 }, ptr %t108 + 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 ret %S.gen.Abi %t112 -endif6771: +endif6778: %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) @@ -60637,14 +60692,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.cond6779 +each.cond6779: %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.body6780, label %each.end6782 +each.body6780: %t142 = load ptr, ptr %a116 %t143 = getelementptr inbounds %S.gen.Leaf, ptr %t142, i64 %t140 %t144 = load %S.gen.Leaf, ptr %t143 @@ -60654,32 +60709,32 @@ 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 %then6783, label %endif6785 +then6783: store i64 8, ptr %a148 - br label %endif6778 -endif6778: + br label %endif6785 +endif6785: %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 %panic6786, label %ok6787 +panic6786: + call void @finch_panic(ptr @.str.4433, i64 3838, ptr @.str.4434) unreachable -ok6780: +ok6787: %t155 = srem i64 %t152, %t153 %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then6781, label %endif6783 -then6781: + br i1 %t156, label %then6788, label %endif6790 +then6788: %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 + 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 -endif6783: +endif6790: %t162 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 %t163 = load i64, ptr %t162 %t164 = sdiv i64 %t163, 8 @@ -60688,92 +60743,92 @@ endif6783: %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) + br i1 %t169, label %range6791, label %inrange6792 +range6791: + call void @finch_panic_index(ptr @.str.4436, i64 3843, i64 %t166, i64 %t168) unreachable -inrange6785: +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.from6786 -logic.from6786: - br i1 %t173, label %logic.end6788, label %logic.rhs6787 -logic.rhs6787: + 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.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: + 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 %range6793, label %inrange6794 -range6793: - call void @finch_panic_index(ptr @.str.4433, i64 3844, i64 %t178, i64 %t180) + br i1 %t181, label %range6800, label %inrange6801 +range6800: + call void @finch_panic_index(ptr @.str.4437, i64 3844, i64 %t178, i64 %t180) unreachable -inrange6794: +inrange6801: %t182 = extractvalue { ptr, i64, i64 } %t179, 0 %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 store i64 1, ptr %t183 - br label %endif6792 -else6791: + 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 %range6795, label %inrange6796 -range6795: - call void @finch_panic_index(ptr @.str.4434, i64 3846, i64 %t184, i64 %t186) + br i1 %t187, label %range6802, label %inrange6803 +range6802: + call void @finch_panic_index(ptr @.str.4438, i64 3846, i64 %t184, i64 %t186) unreachable -inrange6796: +inrange6803: %t188 = extractvalue { ptr, i64, i64 } %t185, 0 %t189 = getelementptr inbounds i64, ptr %t188, i64 %t184 store i64 2, ptr %t189 - br label %endif6792 -endif6792: + 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 %then6797, label %endif6799 -then6797: + 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 %range6800, label %inrange6801 -range6800: - call void @finch_panic_index(ptr @.str.4435, i64 3849, i64 %t192, i64 %t194) + br i1 %t195, label %range6807, label %inrange6808 +range6807: + call void @finch_panic_index(ptr @.str.4439, i64 3849, i64 %t192, i64 %t194) unreachable -inrange6801: +inrange6808: %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: + 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.cond6772 -each.end6775: + br label %each.cond6779 +each.end6782: %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 + 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.cond6802 -for.cond6802: + br label %for.cond6809 +for.cond6809: %t203 = load i64, ptr %a202 %t204 = icmp slt i64 %t203, %t201 - br i1 %t204, label %for.body6803, label %for.end6805 -for.body6803: + 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 @@ -60781,40 +60836,40 @@ for.body6803: store i64 %t208, ptr %a209 %t210 = load i64, ptr %a209 %t211 = icmp sgt i64 %t210, 8 - br i1 %t211, label %then6806, label %endif6808 -then6806: + br i1 %t211, label %then6813, label %endif6815 +then6813: store i64 8, ptr %a209 - br label %endif6808 -endif6808: + 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 %range6809, label %inrange6810 -range6809: - call void @finch_panic_index(ptr @.str.4437, i64 3858, i64 %t212, i64 %t214) + br i1 %t215, label %range6816, label %inrange6817 +range6816: + call void @finch_panic_index(ptr @.str.4441, i64 3858, i64 %t212, i64 %t214) unreachable -inrange6810: +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 %then6811, label %else6812 -then6811: + 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 %range6814, label %inrange6815 -range6814: - call void @finch_panic_index(ptr @.str.4438, i64 3859, i64 %t220, i64 %t222) + br i1 %t223, label %range6821, label %inrange6822 +range6821: + call void @finch_panic_index(ptr @.str.4442, i64 3859, i64 %t220, i64 %t222) unreachable -inrange6815: +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 %then6816, label %else6817 -then6816: + 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 @@ -60822,14 +60877,14 @@ then6816: 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 { ptr, i64, i64 } { ptr @.str.4443, i64 6, i64 0 }, ptr %t232 store i64 %t230, ptr %t228 - br label %endif6818 -else6817: + br label %endif6825 +else6824: %t233 = load i64, ptr %a209 %t234 = icmp sgt i64 %t233, 4 - br i1 %t234, label %then6819, label %else6820 -then6819: + 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 @@ -60837,10 +60892,10 @@ then6819: 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 { ptr, i64, i64 } { ptr @.str.4444, i64 11, i64 0 }, ptr %t240 store i64 %t238, ptr %t236 - br label %endif6821 -else6820: + 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 @@ -60848,21 +60903,21 @@ else6820: 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 { ptr, i64, i64 } { ptr @.str.4445, i64 5, i64 0 }, ptr %t246 store i64 %t244, ptr %t242 - br label %endif6821 -endif6821: - br label %endif6818 -endif6818: - br label %endif6813 -else6812: + 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.4442, i64 1, i64 0 }, ptr %a254 + 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 @@ -60873,30 +60928,30 @@ else6812: %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: + 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.cond6802 -for.end6805: + 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 %then6822, label %else6823 -then6822: + 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 %range6825, label %inrange6826 -range6825: - call void @finch_panic_index(ptr @.str.4443, i64 3871, i64 0, i64 %t269) + br i1 %t270, label %range6832, label %inrange6833 +range6832: + call void @finch_panic_index(ptr @.str.4447, i64 3871, i64 0, i64 %t269) unreachable -inrange6826: +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 @@ -60905,25 +60960,25 @@ inrange6826: 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: + 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.4445, i64 2, i64 0 }, ptr %a280 + 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.4444, i64 2, i64 0 }, ptr %a284 + 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.4446, i64 2, i64 0 }, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.4450, i64 2, i64 0 }, ptr %a289 call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) %t290 = load { ptr, i64, i64 }, ptr %a287 %t291 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 store { ptr, i64, i64 } %t290, ptr %t291 - br label %endif6824 -endif6824: + 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) @@ -60940,20 +60995,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.cond6878 -n.cond6878: + br label %n.cond6885 +n.cond6885: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body6879, label %n.end6880 -n.body6879: + 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.cond6878 -n.end6880: + br label %n.cond6885 +n.end6887: ret void } @@ -61022,63 +61077,63 @@ entry: %t10 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 store %S.gen.Abi %t9, ptr %t10 %t11 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } { ptr @.str.4447, i64 4, i64 0 }, ptr %t11 + 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.4448, i64 4, i64 0 }, ptr %a15 + 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 %then6827, label %endif6829 -then6827: + 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 %endif6829 -endif6829: + 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.4449, i64 8, i64 0 }, ptr %a26 + 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 %then6830, label %endif6832 -then6830: + 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.4450, i64 6, i64 0 }, ptr %t30 - br label %endif6832 -endif6832: + 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.4451, i64 6, i64 0 }, ptr %a35 + 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 %then6833, label %else6834 -then6833: + 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.4452, i64 4, i64 0 }, ptr %t39 + 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 %endif6835 -else6834: + 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.4453, i64 6, i64 0 }, ptr %a46 + 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 %then6836, label %endif6838 -then6836: + 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 @@ -61087,19 +61142,19 @@ then6836: 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: + br label %endif6845 +endif6845: + br label %endif6842 +endif6842: store i64 0, ptr %a56 - br label %each.cond6839 -each.cond6839: + 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.body6840, label %each.end6842 -each.body6840: + 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 @@ -61111,106 +61166,106 @@ each.body6840: %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 + 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 %then6843, label %else6844 -then6843: + 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.cond6846 -each.cond6846: + 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.body6847, label %each.end6849 -each.body6847: + 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.4456, i64 1, i64 0 }, ptr %a90 + 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 %then6850, label %else6851 -then6850: + 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 %endif6852 -else6851: + br label %endif6859 +else6858: %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: + 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.cond6846 -each.end6849: + br label %each.cond6853 +each.end6856: %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) + br i1 %t100, label %panic6860, label %ok6861 +panic6860: + call void @finch_panic(ptr @.str.4461, i64 3911, ptr @.str.4462) unreachable -ok6854: +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.from6855 -logic.from6855: - br i1 %t103, label %logic.end6857, label %logic.rhs6856 -logic.rhs6856: + 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 %panic6858, label %ok6859 -panic6858: - call void @finch_panic(ptr @.str.4459, i64 3911, ptr @.str.4460) + br i1 %t105, label %panic6865, label %ok6866 +panic6865: + call void @finch_panic(ptr @.str.4463, i64 3911, ptr @.str.4464) unreachable -ok6859: +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.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: + 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.from6864 -logic.from6864: - br i1 %t112, label %logic.rhs6865, label %logic.end6866 -logic.rhs6865: + 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.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: + 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 @@ -61219,40 +61274,40 @@ then6869: %t122 = load i64, ptr %a6 %t123 = sub i64 %t122, %t121 store i64 %t123, ptr %a6 - br label %endif6871 -else6870: + br label %endif6878 +else6877: %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: + 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.4462, i64 6, i64 0 }, ptr %a128 + 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 %then6872, label %endif6874 -then6872: + 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 %then6875, label %else6876 -then6875: + 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 %endif6877 -else6876: + br label %endif6884 +else6883: %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: + 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 @@ -61266,13 +61321,13 @@ endif6845: %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: + br label %each.step6848 +each.step6848: %t147 = load i64, ptr %a56 %t148 = add i64 %t147, 1 store i64 %t148, ptr %a56 - br label %each.cond6839 -each.end6842: + 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) @@ -61339,20 +61394,20 @@ entry: %t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t7 = load { ptr, i64, i64 }, ptr %t6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4463, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4467, 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 %then6888, label %endif6890 +then6888: ret void -endif6883: +endif6890: %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 %panic6891, label %ok6892 +panic6891: + call void @finch_panic(ptr @.str.4468, i64 3933, ptr @.str.4469) unreachable -ok6885: +ok6892: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 @@ -61363,11 +61418,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 %range6893, label %inrange6894 +range6893: + call void @finch_panic_index(ptr @.str.4470, i64 3933, i64 %t20, i64 %t22) unreachable -inrange6887: +inrange6894: %t24 = extractvalue { ptr, i64, i64 } %t21, 0 %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 %t26 = load %S.gen.StructDef, ptr %t25 @@ -61378,17 +61433,17 @@ 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 %then6895, label %endif6897 +then6895: %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.4471, 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.4472, 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 @@ -61397,7 +61452,7 @@ then6888: 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 + 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 @@ -61407,27 +61462,27 @@ then6888: 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 + 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 %endif6890 -endif6890: + 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 %then6891, label %endif6893 -then6891: + 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.4471, i64 16, i64 0 }, ptr %a72 + 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.4472, i64 2, i64 0 }, ptr %a77 + 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 @@ -61436,7 +61491,7 @@ then6891: 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 + 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 @@ -61446,7 +61501,7 @@ then6891: 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 + 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 @@ -61456,8 +61511,8 @@ then6891: 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: + br label %endif6900 +endif6900: ret void } @@ -61473,51 +61528,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.from6901 +logic.from6901: + br i1 %t3, label %logic.end6903, label %logic.rhs6902 +logic.rhs6902: %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.4479, 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.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: %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.4480, 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.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: %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.4481, 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.rend6912 +logic.rend6912: + br label %logic.end6911 +logic.end6911: + %t24 = phi i1 [ true, %logic.from6909 ], [ %t23, %logic.rend6912 ] ret i1 %t24 } @@ -61558,71 +61613,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 %then6913, label %endif6915 +then6913: %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.4482, i64 59, i64 0 }) + br label %endif6915 +endif6915: %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 %then6916, label %endif6918 +then6916: %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.4483, i64 74, i64 0 }) + br label %endif6918 +endif6918: %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 %then6919, label %endif6921 +then6919: %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.4484, i64 29, i64 0 }) + br label %endif6921 +endif6921: %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.cond6922 +for.cond6922: %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.body6923, label %for.end6925 +for.body6923: %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 %range6926, label %inrange6927 +range6926: + call void @finch_panic_index(ptr @.str.4485, i64 3958, i64 %t27, i64 %t29) unreachable -inrange6920: +inrange6927: %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 %then6928, label %endif6930 +then6928: %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 %range6931, label %inrange6932 +range6931: + call void @finch_panic_index(ptr @.str.4486, i64 3959, i64 %t38, i64 %t40) unreachable -inrange6925: +inrange6932: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t38 %t44 = load %S.ast.Node, ptr %t43 @@ -61631,98 +61686,98 @@ 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 %range6933, label %inrange6934 +range6933: + call void @finch_panic_index(ptr @.str.4488, i64 3959, i64 %t46, i64 %t48) unreachable -inrange6927: +inrange6934: %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.4487, 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 + 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 %endif6923 -endif6923: - br label %for.step6917 -for.step6917: + 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.cond6915 -for.end6918: + 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.4486, i64 4, i64 0 }, ptr %a68 + 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.from6928 -logic.from6928: - br i1 %t70, label %logic.rhs6929, label %logic.end6930 -logic.rhs6929: + 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.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: + 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.4487, i64 69, i64 0 }, ptr %a82 + 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.4488, i64 1, i64 0 }, ptr %a87 + 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 %endif6934 -endif6934: + br label %endif6941 +endif6941: %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) + br i1 %t90, label %panic6942, label %ok6943 +panic6942: + call void @finch_panic(ptr @.str.4493, i64 3965, ptr @.str.4494) unreachable -ok6936: +ok6943: %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 14 store i64 0, ptr %a92 - br label %each.cond6937 -each.cond6937: + 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.body6938, label %each.end6940 -each.body6938: + 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.from6941 -logic.from6941: - br i1 %t102, label %logic.rhs6942, label %logic.end6943 -logic.rhs6942: + 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 @@ -61731,35 +61786,35 @@ logic.rhs6942: 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: + 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.4491, i64 1, i64 0 }, ptr %a117 + 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.4492, i64 38, i64 0 }, ptr %a122 + 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 %endif6947 -endif6947: - br label %each.step6939 -each.step6939: + 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.cond6937 -each.end6940: + br label %each.cond6944 +each.end6947: ret void } @@ -61895,22 +61950,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.cond6955 +for.cond6955: %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.body6956, label %for.end6958 +for.body6956: %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 %range6959, label %inrange6960 +range6959: + call void @finch_panic_index(ptr @.str.4497, i64 3978, i64 %t15, i64 %t17) unreachable -inrange6953: +inrange6960: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.ast.Type, ptr %t19, i64 %t15 %t21 = load %S.ast.Type, ptr %t20 @@ -61921,16 +61976,16 @@ 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.4498, 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 %then6961, label %else6962 +then6961: %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.4499, 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 @@ -61946,16 +62001,16 @@ then6954: %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 } { 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.4498, i64 3, i64 0 }, ptr %a55 + 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.4496, i64 3, i64 0 }, ptr %a59 + 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 @@ -61966,8 +62021,8 @@ then6954: %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: + 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 @@ -61980,7 +62035,7 @@ else6955: 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 + 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 @@ -62002,7 +62057,7 @@ else6955: %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 + 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 @@ -62019,25 +62074,25 @@ else6955: %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: + br label %endif6963 +endif6963: + br label %for.step6957 +for.step6957: %t111 = load i64, ptr %a11 %t112 = add i64 %t111, 1 store i64 %t112, ptr %a11 - br label %for.cond6948 -for.end6951: + 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.4501, i64 5, i64 0 }, ptr %a118 + 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.4502, i64 1, i64 0 }, ptr %a123 + 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 @@ -62047,11 +62102,11 @@ for.end6951: 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 + 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.4504, i64 2, i64 0 }, ptr %a136 + 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 @@ -62059,60 +62114,60 @@ for.end6951: 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 + 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.4506, i64 4, i64 0 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4507, i64 0, i64 0 }, ptr %a149 + 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.4508, i64 4, i64 0 }, ptr %a154 + 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 %then6957, label %else6958 -then6957: + 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.4509, i64 8, i64 0 }) - br label %endif6959 -else6958: + 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.4510, i64 4, i64 0 }, ptr %a164 + 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 %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 + 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.4514, i64 8, i64 0 }, ptr %a173 + 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.4515, i64 6, i64 0 }, ptr %a178 + 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.4513, i64 7, i64 0 }, ptr %a182 + 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 %endif6962 -else6961: + 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 @@ -62125,12 +62180,12 @@ else6961: store { ptr, i64, i64 } %t192, ptr %a149 %t193 = load ptr, ptr %a1 %t194 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4516, i64 4, i64 0 }, ptr %a196 + 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.4517, i64 1, i64 0 }, ptr %a201 + 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 @@ -62141,30 +62196,30 @@ else6961: 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 + 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 %panic6963, label %ok6964 -panic6963: - call void @finch_panic(ptr @.str.4519, i64 4003, ptr @.str.4520) + br i1 %t212, label %panic6970, label %ok6971 +panic6970: + call void @finch_panic(ptr @.str.4523, i64 4003, ptr @.str.4524) unreachable -ok6964: +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 %then6965, label %endif6967 -then6965: - store { ptr, i64, i64 } { ptr @.str.4521, i64 10, i64 0 }, ptr %a210 - br label %endif6967 -endif6967: + 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.4522, i64 6, i64 0 }, ptr %a220 + 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 @@ -62174,7 +62229,7 @@ endif6967: 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 + store { ptr, i64, i64 } { ptr @.str.4527, i64 1, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 %t232 = load { ptr, i64, i64 }, ptr %a148 @@ -62183,7 +62238,7 @@ endif6967: 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 + 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 @@ -62193,11 +62248,11 @@ endif6967: 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 + 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.4526, i64 2, i64 0 }, ptr %a252 + 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 @@ -62205,7 +62260,7 @@ endif6967: 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 + 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) @@ -62481,21 +62536,21 @@ entry: 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 %panic6975, label %ok6976 +panic6975: + call void @finch_panic(ptr @.str.4532, i64 4012, ptr @.str.4533) unreachable -ok6969: +ok6976: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 %t7 = load i64, ptr %a2 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4530, i64 4012, i64 %t7, i64 %t9) + br i1 %t10, label %range6977, label %inrange6978 +range6977: + call void @finch_panic_index(ptr @.str.4534, i64 4012, i64 %t7, i64 %t9) unreachable -inrange6971: +inrange6978: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.FnSig, ptr %t11, i64 %t7 %t13 = load %S.gen.FnSig, ptr %t12 @@ -62506,12 +62561,12 @@ 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.4535, 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 + 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 @@ -62523,15 +62578,15 @@ inrange6971: 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) + br i1 %t37, label %panic6979, label %ok6980 +panic6979: + call void @finch_panic(ptr @.str.4537, i64 4014, ptr @.str.4538) unreachable -ok6973: +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.4535, i64 2, i64 0 }, ptr %a42 + 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 @@ -62539,48 +62594,48 @@ ok6973: %t46 = load i64, ptr %t39 %t47 = load ptr, ptr %t38 store i64 0, ptr %a48 - br label %find.cond6974 -find.cond6974: + br label %find.cond6981 +find.cond6981: %t49 = load i64, ptr %a48 %t50 = icmp slt i64 %t49, %t46 - br i1 %t50, label %find.body6975, label %find.end6978 -find.body6975: + 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.hit6976, label %find.next6977 -find.hit6976: + br i1 %t56, label %find.hit6983, label %find.next6984 +find.hit6983: store i64 %t49, ptr %a45 - br label %find.end6978 -find.next6977: + br label %find.end6985 +find.next6984: %t57 = add i64 %t49, 1 store i64 %t57, ptr %a48 - br label %find.cond6974 -find.end6978: + br label %find.cond6981 +find.end6985: %t58 = load i64, ptr %a45 %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then6979, label %endif6981 -then6979: + 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 -endif6981: +endif6988: %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) + br i1 %t65, label %panic6989, label %ok6990 +panic6989: + call void @finch_panic(ptr @.str.4540, i64 4017, ptr @.str.4541) unreachable -ok6983: +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.4538, i64 2, i64 0 }, ptr %a70 + 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 @@ -62595,116 +62650,116 @@ ok6983: %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: + 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.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: + 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.4539, i64 5, i64 0 }, ptr %a89 + 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.4540, i64 81, i64 0 }, ptr %a94 + 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 %endif6990 -endif6990: + br label %endif6997 +endif6997: %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 store i64 0, ptr %a97 - br label %each.cond6991 -each.cond6991: + 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.body6992, label %each.end6994 -each.body6992: + 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.from6995 -logic.from6995: - br i1 %t107, label %logic.end6997, label %logic.rhs6996 -logic.rhs6996: + 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.4541, i64 4, i64 0 }, ptr %a111 + 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.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: + 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.4542, i64 4, i64 0 }, ptr %a118 + 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.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: + 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.4543, i64 3, i64 0 }, ptr %a125 + 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.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: + 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.4544, i64 6, i64 0 }, ptr %a132 + 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.from7010 -logic.from7010: - br i1 %t134, label %logic.rhs7011, label %logic.end7012 -logic.rhs7011: + 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 %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4545, i64 4022, ptr @.str.4546) + br i1 %t136, label %panic7020, label %ok7021 +panic7020: + call void @finch_panic(ptr @.str.4549, i64 4022, ptr @.str.4550) unreachable -ok7014: +ok7021: %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 15 %t138 = load ptr, ptr %a1 %t139 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 3 @@ -62715,38 +62770,38 @@ ok7014: %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) + br i1 %t146, label %range7022, label %inrange7023 +range7022: + call void @finch_panic_index(ptr @.str.4551, i64 4022, i64 %t143, i64 %t145) unreachable -inrange7016: +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.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 ] + 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 %then7019, label %endif7021 -then7019: + 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.4548, i64 5, i64 0 }, ptr %a159 + 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.4549, i64 95, i64 0 }, ptr %a164 + 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 @@ -62756,104 +62811,104 @@ then7019: 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: + 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.cond6991 -each.end6994: + 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.from7022 -logic.from7022: - br i1 %t176, label %logic.end7024, label %logic.rhs7023 -logic.rhs7023: + 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.4550, i64 4, i64 0 }, ptr %a181 + 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.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: + 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.4551, i64 4, i64 0 }, ptr %a189 + 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.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: + 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.4552, i64 3, i64 0 }, ptr %a197 + 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.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: + 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.4553, i64 4, i64 0 }, ptr %a205 + 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.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: + 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.4554, i64 6, i64 0 }, ptr %a213 + 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.from7041 -logic.from7041: - br i1 %t215, label %logic.rhs7042, label %logic.end7043 -logic.rhs7042: + 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 %panic7044, label %ok7045 -panic7044: - call void @finch_panic(ptr @.str.4555, i64 4026, ptr @.str.4556) + br i1 %t217, label %panic7051, label %ok7052 +panic7051: + call void @finch_panic(ptr @.str.4559, i64 4026, ptr @.str.4560) unreachable -ok7045: +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 @@ -62866,38 +62921,38 @@ ok7045: %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) + br i1 %t229, label %range7053, label %inrange7054 +range7053: + call void @finch_panic_index(ptr @.str.4561, i64 4026, i64 %t226, i64 %t228) unreachable -inrange7047: +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.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 ] + 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 %then7050, label %endif7052 -then7050: + 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.4558, i64 5, i64 0 }, ptr %a242 + 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.4559, i64 38, i64 0 }, ptr %a247 + 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 @@ -62908,8 +62963,8 @@ then7050: 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: + br label %endif7059 +endif7059: %t256 = load ptr, ptr %a1 %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t258 = load %S.ast.Type, ptr %t257 @@ -62922,22 +62977,22 @@ endif7052: 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 + 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 %then7053, label %endif7055 -then7053: + 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.4561, i64 9, i64 0 }, ptr %a277 + 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.4562, i64 14, i64 0 }, ptr %a282 + 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 @@ -62947,31 +63002,31 @@ then7053: %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 { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a268 store i64 1, ptr %a267 - br label %endif7055 -endif7055: + 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.cond7056 -for.cond7056: + br label %for.cond7063 +for.cond7063: %t293 = load i64, ptr %a292 %t294 = icmp slt i64 %t293, %t291 - br i1 %t294, label %for.body7057, label %for.end7059 -for.body7057: + 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 %range7060, label %inrange7061 -range7060: - call void @finch_panic_index(ptr @.str.4564, i64 4041, i64 %t296, i64 %t298) + br i1 %t299, label %range7067, label %inrange7068 +range7067: + call void @finch_panic_index(ptr @.str.4568, i64 4041, i64 %t296, i64 %t298) unreachable -inrange7061: +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 @@ -62984,11 +63039,11 @@ inrange7061: %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) + br i1 %t311, label %range7069, label %inrange7070 +range7069: + call void @finch_panic_index(ptr @.str.4569, i64 4042, i64 %t308, i64 %t310) unreachable -inrange7063: +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 @@ -62999,21 +63054,21 @@ inrange7063: %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 + 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 %then7064, label %else7065 -then7064: + 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.4567, i64 10, i64 0 }, ptr %a330 + 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.4568, i64 8, i64 0 }, ptr %a335 + 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 @@ -63025,7 +63080,7 @@ then7064: 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 + 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 @@ -63047,7 +63102,7 @@ then7064: %t362 = load %S.ast.Type, ptr %a306 %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t361, %S.ast.Type %t362) store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.4574, i64 1, i64 0 }, ptr %a366 call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) %t367 = load { ptr, i64, i64 }, ptr %a364 %t368 = load ptr, ptr %a1 @@ -63057,7 +63112,7 @@ then7064: %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 } { 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 @@ -63076,21 +63131,21 @@ then7064: %t388 = load i64, ptr %a267 %t389 = add i64 %t388, 1 store i64 %t389, ptr %a267 - br label %endif7066 -else7065: + 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.4572, i64 8, i64 0 }, ptr %a393 + 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 %then7067, label %else7068 -then7067: + 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.4573, i64 6, i64 0 }, ptr %a401 + 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 @@ -63106,7 +63161,7 @@ then7067: %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 + 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 @@ -63116,7 +63171,7 @@ then7067: %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 } { 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 @@ -63135,45 +63190,45 @@ then7067: %t436 = load i64, ptr %a267 %t437 = add i64 %t436, 1 store i64 %t437, ptr %a267 - br label %endif7069 -else7068: + 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.4576, i64 6, i64 0 }, ptr %a441 + 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 %then7070, label %else7071 -then7070: + 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.4577, i64 9, i64 0 }) + %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.cond7073 -for.cond7073: + br label %for.cond7080 +for.cond7080: %t451 = load i64, ptr %a450 %t452 = icmp slt i64 %t451, %t449 - br i1 %t452, label %for.body7074, label %for.end7076 -for.body7074: + 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 %range7077, label %inrange7078 -range7077: - call void @finch_panic_index(ptr @.str.4578, i64 4054, i64 %t455, i64 %t457) + br i1 %t458, label %range7084, label %inrange7085 +range7084: + call void @finch_panic_index(ptr @.str.4582, i64 4054, i64 %t455, i64 %t457) unreachable -inrange7078: +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.4579, i64 3, i64 0 }, ptr %a464 + 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 @@ -63196,29 +63251,29 @@ inrange7078: %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) + br i1 %t482, label %range7086, label %inrange7087 +range7086: + call void @finch_panic_index(ptr @.str.4584, i64 4055, i64 %t479, i64 %t481) unreachable -inrange7080: +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.4581, i64 2, i64 0 }, ptr %a490 + 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.4582, i64 31, i64 0 }, ptr %a496 + 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.4583, i64 6, i64 0 }, ptr %a501 + 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 @@ -63234,19 +63289,19 @@ inrange7080: %t512 = load i64, ptr %a267 %t513 = add i64 %t512, 1 store i64 %t513, ptr %a267 - br label %for.step7075 -for.step7075: + br label %for.step7082 +for.step7082: %t514 = load i64, ptr %a450 %t515 = add i64 %t514, 1 store i64 %t515, ptr %a450 - br label %for.cond7073 -for.end7076: + 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.4584, i64 1, i64 0 }, ptr %a522 + 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 @@ -63266,8 +63321,8 @@ for.end7076: %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: + 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 @@ -63280,7 +63335,7 @@ else7071: 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 + 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 @@ -63302,7 +63357,7 @@ else7071: %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 + 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 @@ -63322,29 +63377,29 @@ else7071: %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: + 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.cond7056 -for.end7059: + br label %for.cond7063 +for.end7066: %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 } { 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.4588, i64 1, i64 0 }, ptr %a597 + 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 @@ -63354,11 +63409,11 @@ for.end7059: 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 + 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.4590, i64 2, i64 0 }, ptr %a610 + 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 @@ -63366,31 +63421,31 @@ for.end7059: 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 + 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.4592, i64 0, i64 0 }, ptr %a622 + 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.4593, i64 4, i64 0 }, ptr %a627 + 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 %then7081, label %else7082 -then7081: + 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.4594, i64 8, i64 0 }) - br label %endif7083 -else7082: + 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 %then7084, label %else7085 -then7084: + 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 @@ -63402,20 +63457,20 @@ then7084: %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: + 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.4596, i64 6, i64 0 }, ptr %a649 + 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 %then7087, label %else7088 -then7087: + 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.4597, i64 9, i64 0 }) + %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 @@ -63431,12 +63486,12 @@ then7087: %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 } { 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.4599, i64 1, i64 0 }, ptr %a674 + 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 @@ -63450,8 +63505,8 @@ then7087: 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: + 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 @@ -63462,12 +63517,12 @@ else7088: %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 } { 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.4601, i64 1, i64 0 }, ptr %a701 + 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 %t703 = load ptr, ptr %a1 @@ -63478,21 +63533,21 @@ else7088: 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: + 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.4602, i64 15, i64 0 }, ptr %a714 + 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.4603, i64 1, i64 0 }, ptr %a719 + 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 @@ -63502,7 +63557,7 @@ endif7083: 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 + 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 @@ -63511,11 +63566,11 @@ endif7083: 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 + 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.4606, i64 2, i64 0 }, ptr %a741 + 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 @@ -63523,7 +63578,7 @@ endif7083: 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 + 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) @@ -63614,21 +63669,21 @@ entry: 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 %panic7097, label %ok7098 +panic7097: + call void @finch_panic(ptr @.str.4612, i64 4087, ptr @.str.4613) unreachable -ok7091: +ok7098: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = load i64, ptr %a3 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7092, label %inrange7093 -range7092: - call void @finch_panic_index(ptr @.str.4610, i64 4087, i64 %t7, i64 %t9) + br i1 %t10, label %range7099, label %inrange7100 +range7099: + call void @finch_panic_index(ptr @.str.4614, i64 4087, i64 %t7, i64 %t9) unreachable -inrange7093: +inrange7100: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -63646,11 +63701,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 %range7101, label %inrange7102 +range7101: + call void @finch_panic_index(ptr @.str.4615, i64 4089, i64 0, i64 %t25) unreachable -inrange7095: +inrange7102: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 0 %t29 = load %S.ast.Node, ptr %t28 @@ -63660,25 +63715,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 %then7103, label %endif7105 +then7103: %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 %range7106, label %inrange7107 +range7106: + call void @finch_panic_index(ptr @.str.4616, i64 4091, i64 0, i64 %t39) unreachable -inrange7100: +inrange7107: %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.4617, 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,9 +63744,9 @@ inrange7100: 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 + 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 @@ -63707,58 +63762,58 @@ endif7098: 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: + 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.4615, i64 4095) + %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.cond7104 -find.cond7104: + br label %find.cond7111 +find.cond7111: %t83 = load i64, ptr %a82 %t84 = icmp slt i64 %t83, %t80 - br i1 %t84, label %find.body7105, label %find.end7108 -find.body7105: + 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.hit7106, label %find.next7107 -find.hit7106: + br i1 %t87, label %find.hit7113, label %find.next7114 +find.hit7113: store i64 %t83, ptr %a79 - br label %find.end7108 -find.next7107: + br label %find.end7115 +find.next7114: %t88 = add i64 %t83, 1 store i64 %t88, ptr %a82 - br label %find.cond7104 -find.end7108: + 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 %then7109, label %endif7111 -then7109: + 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 %range7112, label %inrange7113 -range7112: - call void @finch_panic_index(ptr @.str.4616, i64 4096, i64 0, i64 %t95) + br i1 %t96, label %range7119, label %inrange7120 +range7119: + call void @finch_panic_index(ptr @.str.4620, i64 4096, i64 0, i64 %t95) unreachable -inrange7113: +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.4617, i64 37, i64 0 }, ptr %a104 + 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 @@ -63768,8 +63823,8 @@ inrange7113: 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: + 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 @@ -63782,34 +63837,34 @@ endif7111: %t121 = load %S.ast.Type, ptr %a120 %t122 = insertvalue %S.gen.Val %t117, %S.ast.Type %t121, 1 ret %S.gen.Val %t122 -endif7103: +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.4618, i64 3, i64 0 }) + %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.4619, i64 0, i64 0 }, ptr %a131 + 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.cond7114 -for.cond7114: + br label %for.cond7121 +for.cond7121: %t136 = load i64, ptr %a135 %t137 = icmp slt i64 %t136, %t134 - br i1 %t137, label %for.body7115, label %for.end7117 -for.body7115: + 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.4620, i64 12, i64 0 }, ptr %a141 + 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.4621, i64 2, i64 0 }, ptr %a146 + 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 @@ -63817,11 +63872,11 @@ for.body7115: %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) + br i1 %t152, label %range7125, label %inrange7126 +range7125: + call void @finch_panic_index(ptr @.str.4626, i64 4103, i64 %t149, i64 %t151) unreachable -inrange7119: +inrange7126: %t153 = extractvalue { ptr, i64, i64 } %t150, 0 %t154 = getelementptr inbounds i64, ptr %t153, i64 %t149 %t155 = load i64, ptr %t154 @@ -63835,23 +63890,23 @@ inrange7119: 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: + 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 %endif7122 -else7121: + br label %endif7129 +else7128: %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 } { 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.4624, i64 2, i64 0 }, ptr %a178 + 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 @@ -63861,30 +63916,30 @@ else7121: %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: + 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.cond7114 -for.end7117: + 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.4625, i64 7, i64 0 }, ptr %a192 + 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.4626, i64 6, i64 0 }, ptr %a197 + 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.4627, i64 32, i64 0 }, ptr %a203 + 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 @@ -63892,12 +63947,12 @@ for.end7117: 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 } { 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.4629, i64 7, i64 0 }, ptr %a215 + 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) @@ -63925,106 +63980,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.4634, 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.from7130 +logic.from7130: + br i1 %t8, label %logic.end7132, label %logic.rhs7131 +logic.rhs7131: %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.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: %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 %then7137, label %endif7139 +then7137: + ret { ptr, i64, i64 } { ptr @.str.4635, i64 8, i64 0 } +endif7139: + br label %endif7136 +endif7136: %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.from7140 +logic.from7140: + br i1 %t16, label %logic.end7142, label %logic.rhs7141 +logic.rhs7141: %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.4636, 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.from7143 +logic.from7143: + br i1 %t22, label %logic.rhs7144, label %logic.end7145 +logic.rhs7144: %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 %panic7146, label %ok7147 +panic7146: + call void @finch_panic(ptr @.str.4637, i64 4123, ptr @.str.4638) unreachable -ok7140: +ok7147: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 29 %t26 = load %S.platform.Target, ptr %t25 %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.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.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: %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: - %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 - %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: - %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 + %t33 = phi i1 [ false, %logic.from7150 ], [ %t32, %logic.rend7153 ] + br i1 %t33, label %then7154, label %endif7156 then7154: - ret { ptr, i64, i64 } { ptr @.str.4637, i64 8, i64 0 } + ret { ptr, i64, i64 } { ptr @.str.4639, i64 8, i64 0 } endif7156: - ret { ptr, i64, i64 } { ptr @.str.4638, i64 0, i64 0 } + %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 + %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: + %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 } } define internal { ptr, i64, i64 } @finch.gen.cLL(ptr %p0, %S.ast.Type %p1) { @@ -64038,13 +64093,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.4643, 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 %then7164, label %endif7166 +then7164: + ret { ptr, i64, i64 } { ptr @.str.4644, i64 3, i64 0 } +endif7166: %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) @@ -64400,26 +64455,26 @@ entry: 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 %panic7167, label %ok7168 +panic7167: + call void @finch_panic(ptr @.str.4645, i64 4140, ptr @.str.4646) unreachable -ok7161: +ok7168: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 %t7 = load i1, ptr %t6 - br i1 %t7, label %then7162, label %endif7164 -then7162: + br i1 %t7, label %then7169, label %endif7171 +then7169: 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.cond7172 +each.cond7172: %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.body7173, label %each.end7175 +each.body7173: %t15 = load ptr, ptr %t9 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 %t17 = load %S.ast.Type, ptr %t16 @@ -64434,27 +64489,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.step7174 +each.step7174: %t26 = load i64, ptr %a10 %t27 = add i64 %t26, 1 store i64 %t27, ptr %a10 - br label %each.cond7165 -each.end7168: + br label %each.cond7172 +each.end7175: %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 %then7176, label %endif7178 +then7176: %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.4647, i64 3, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif7171 -endif7171: + br label %endif7178 +endif7178: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a2 %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -64464,12 +64519,12 @@ 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.4648, 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.4649, 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 @@ -64480,7 +64535,7 @@ endif7171: 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 + 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 @@ -64490,11 +64545,11 @@ endif7171: 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 } { ptr @.str.4651, i64 1, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4648, i64 2, i64 0 }, ptr %a74 + 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 @@ -64502,28 +64557,28 @@ endif7171: 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 + 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.4650, i64 0, i64 0 }, i64 0, i64 0) - br label %endif7164 -endif7164: + 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 %then7172, label %endif7174 -then7172: + 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.4651, i64 16, i64 0 }, ptr %a94 + 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.4652, i64 35, i64 0 }, ptr %a99 + 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 @@ -64533,33 +64588,33 @@ then7172: 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: + 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 %then7175, label %else7176 -then7175: + 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 %then7178, label %endif7180 -then7178: + 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.4653, i64 1, i64 0 }, ptr %a123 + 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.4654, i64 17, i64 0 }, ptr %a128 + 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 @@ -64572,7 +64627,7 @@ then7178: 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.4659, i64 22, i64 0 }, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 %t143 = load i64, ptr %a110 @@ -64583,27 +64638,27 @@ then7178: 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: + 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 %then7181, label %endif7183 -then7181: + 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.4656, i64 1, i64 0 }, ptr %a160 + 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.4657, i64 8, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.4661, i64 8, i64 0 }, ptr %a165 call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) %t166 = load { ptr, i64, i64 }, ptr %a163 %t167 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 @@ -64616,7 +64671,7 @@ then7181: 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 + 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 @@ -64627,10 +64682,10 @@ then7181: 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: + 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 @@ -64642,18 +64697,18 @@ endif7177: %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 }) + 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.cond7184 -each.cond7184: + 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.body7185, label %each.end7187 -each.body7185: + 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 @@ -64668,7 +64723,7 @@ each.body7185: %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 }) + 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 @@ -64681,13 +64736,13 @@ each.body7185: %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: + br label %each.step7193 +each.step7193: %t228 = load i64, ptr %a200 %t229 = add i64 %t228, 1 store i64 %t229, ptr %a200 - br label %each.cond7184 -each.end7187: + 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 @@ -64695,11 +64750,11 @@ each.end7187: 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 + 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 %then7188, label %endif7190 -then7188: + br i1 %t239, label %then7195, label %endif7197 +then7195: %t240 = load ptr, ptr %a1 %t241 = load ptr, ptr %a1 %t242 = load %S.ast.Type, ptr %a192 @@ -64710,12 +64765,12 @@ then7188: %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 } { 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.4663, i64 10, i64 0 }, ptr %a255 + 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 @@ -64729,12 +64784,12 @@ then7188: %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 } { 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.4665, i64 11, i64 0 }, ptr %a271 + 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 @@ -64749,34 +64804,34 @@ then7188: %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: + 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.cond7191 -for.cond7191: + br label %for.cond7198 +for.cond7198: %t286 = load i64, ptr %a285 %t287 = icmp slt i64 %t286, %t284 - br i1 %t287, label %for.body7192, label %for.end7194 -for.body7192: + 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 %then7195, label %endif7197 -then7195: + 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 %range7198, label %inrange7199 -range7198: - call void @finch_panic_index(ptr @.str.4666, i64 4180, i64 %t293, i64 %t295) + br i1 %t296, label %range7205, label %inrange7206 +range7205: + call void @finch_panic_index(ptr @.str.4670, i64 4180, i64 %t293, i64 %t295) unreachable -inrange7199: +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 @@ -64789,11 +64844,11 @@ inrange7199: %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) + br i1 %t308, label %range7207, label %inrange7208 +range7207: + call void @finch_panic_index(ptr @.str.4671, i64 4181, i64 %t305, i64 %t307) unreachable -inrange7201: +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 @@ -64808,11 +64863,11 @@ inrange7201: %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) + br i1 %t322, label %range7209, label %inrange7210 +range7209: + call void @finch_panic_index(ptr @.str.4672, i64 4182, i64 %t319, i64 %t321) unreachable -inrange7203: +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 @@ -64824,11 +64879,11 @@ inrange7203: %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) + br i1 %t333, label %range7211, label %inrange7212 +range7211: + call void @finch_panic_index(ptr @.str.4673, i64 4182, i64 %t330, i64 %t332) unreachable -inrange7205: +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 @@ -64836,12 +64891,12 @@ inrange7205: %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 } { 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.4671, i64 4, i64 0 }, ptr %a347 + 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 @@ -64855,11 +64910,11 @@ inrange7205: %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 + 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 %then7206, label %else7207 -then7206: + 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 @@ -64877,12 +64932,12 @@ then7206: %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 } { 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.4674, i64 8, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.4678, i64 8, i64 0 }, ptr %a385 call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) %t386 = load { ptr, i64, i64 }, ptr %a383 %t387 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 3 @@ -64909,7 +64964,7 @@ then7206: %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 + 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 @@ -64924,16 +64979,16 @@ then7206: %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: + 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.4676, i64 8, i64 0 }, ptr %a423 + 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 %then7209, label %else7210 -then7209: + 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 @@ -64954,11 +65009,11 @@ then7209: 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 { 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.4678, i64 4, i64 0 }, ptr %a447 + 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 @@ -64969,18 +65024,18 @@ then7209: %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: + 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.4679, i64 6, i64 0 }, ptr %a457 + 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 %then7212, label %else7213 -then7212: + 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.4680, i64 9, i64 0 }) + %t461 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t460, { ptr, i64, i64 } { ptr @.str.4684, i64 9, i64 0 }) store { ptr, i64, i64 } %t461, ptr %a462 %t463 = load ptr, ptr %a1 %t464 = load ptr, ptr %a1 @@ -64994,34 +65049,34 @@ then7212: %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: + br label %for.cond7222 +for.cond7222: %t474 = load i64, ptr %a473 %t475 = icmp slt i64 %t474, %t472 - br i1 %t475, label %for.body7216, label %for.end7218 -for.body7216: + 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 %range7219, label %inrange7220 -range7219: - call void @finch_panic_index(ptr @.str.4681, i64 4198, i64 %t478, i64 %t480) + br i1 %t481, label %range7226, label %inrange7227 +range7226: + call void @finch_panic_index(ptr @.str.4685, i64 4198, i64 %t478, i64 %t480) unreachable -inrange7220: +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.4682, i64 31, i64 0 }, ptr %a488 + 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.4683, i64 6, i64 0 }, ptr %a493 + 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 @@ -65041,11 +65096,11 @@ inrange7220: %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) + br i1 %t511, label %range7228, label %inrange7229 +range7228: + call void @finch_panic_index(ptr @.str.4688, i64 4199, i64 %t508, i64 %t510) unreachable -inrange7222: +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 @@ -65065,16 +65120,16 @@ inrange7222: %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) + br i1 %t527, label %range7230, label %inrange7231 +range7230: + call void @finch_panic_index(ptr @.str.4689, i64 4200, i64 %t524, i64 %t526) unreachable -inrange7224: +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.4686, i64 1, i64 0 }, ptr %a533 + 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 @@ -65089,15 +65144,15 @@ inrange7224: %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: + br label %for.step7224 +for.step7224: %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: + 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 @@ -65119,17 +65174,17 @@ else7213: %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 + 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 %then7225, label %else7226 -then7225: + 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.4688, i64 4, i64 0 }, ptr %a573 + 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 @@ -65140,8 +65195,8 @@ then7225: %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: + 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 @@ -65154,7 +65209,7 @@ else7226: 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 + 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 @@ -65170,27 +65225,27 @@ else7226: %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: + 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 %range7228, label %inrange7229 -range7228: - call void @finch_panic_index(ptr @.str.4690, i64 4213, i64 %t607, i64 %t609) + br i1 %t610, label %range7235, label %inrange7236 +range7235: + call void @finch_panic_index(ptr @.str.4694, i64 4213, i64 %t607, i64 %t609) unreachable -inrange7229: +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 @@ -65205,68 +65260,68 @@ inrange7229: %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 + 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 %then7230, label %endif7232 -then7230: + 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 %range7233, label %inrange7234 -range7233: - call void @finch_panic_index(ptr @.str.4692, i64 4216, i64 %t630, i64 %t632) + br i1 %t633, label %range7240, label %inrange7241 +range7240: + call void @finch_panic_index(ptr @.str.4696, i64 4216, i64 %t630, i64 %t632) unreachable -inrange7234: +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.4693, i64 23, i64 0 }) - br label %endif7232 -endif7232: + 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 %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.4698, i64 6, i64 0 }, ptr %a640 %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) %t642 = icmp ne i32 %t641, 0 - br label %logic.from7235 -logic.from7235: - br i1 %t642, label %logic.end7237, label %logic.rhs7236 -logic.rhs7236: + 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.4695, i64 5, i64 0 }, ptr %a646 + 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.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: + 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 %range7242, label %inrange7243 -range7242: - call void @finch_panic_index(ptr @.str.4696, i64 4219, i64 %t652, i64 %t654) + br i1 %t655, label %range7249, label %inrange7250 +range7249: + call void @finch_panic_index(ptr @.str.4700, i64 4219, i64 %t652, i64 %t654) unreachable -inrange7243: +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.4697, i64 68, i64 0 }) - br label %endif7241 -endif7241: + 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 @@ -65276,115 +65331,115 @@ endif7241: %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 + 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 %then7244, label %else7245 -then7244: + 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.4699, i64 5, i64 0 }) + %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.4700, i64 5, i64 0 }) + %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 %endif7246 -else7245: + 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.4701, i64 3, i64 0 }, ptr %a680 + 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 %then7247, label %else7248 -then7247: + 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.4702, i64 3, i64 0 }) + %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 %endif7249 -else7248: + 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.4703, i64 4, i64 0 }, ptr %a690 + 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 %then7250, label %else7251 -then7250: + 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.4704, i64 8, i64 0 }, ptr %a697 + 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.4705, i64 7, i64 0 }, ptr %a702 + 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.4706, i64 3, i64 0 }) + %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 %endif7252 -else7251: + br label %endif7259 +else7258: %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: + 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.4707, i64 4, i64 0 }, ptr %a711 + 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.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: + 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.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: + 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.4708, i64 3, i64 0 }) + %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.4709, i64 3, i64 0 }) + %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 %endif7263 -endif7263: - br label %endif7252 -endif7252: - br label %endif7249 -endif7249: - br label %endif7246 -endif7246: + 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.4710, i64 1, i64 0 }, ptr %a731 + 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 @@ -65399,63 +65454,63 @@ endif7246: %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: + br label %for.step7200 +for.step7200: %t742 = load i64, ptr %a285 %t743 = add i64 %t742, 1 store i64 %t743, ptr %a285 - br label %for.cond7191 -for.end7194: + 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.4711, i64 0, i64 0 }, ptr %a750 + 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.4712, i64 6, i64 0 }, ptr %a755 + 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 %then7264, label %endif7266 -then7264: + 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 %endif7266 -endif7266: - store { ptr, i64, i64 } { ptr @.str.4713, i64 0, i64 0 }, ptr %a761 + 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 %then7267, label %endif7269 -then7267: - store { ptr, i64, i64 } { ptr @.str.4714, i64 5, i64 0 }, ptr %a761 + 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 %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: + 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 %panic7273, label %ok7274 -panic7273: - call void @finch_panic(ptr @.str.4716, i64 4250, ptr @.str.4717) + br i1 %t768, label %panic7280, label %ok7281 +panic7280: + call void @finch_panic(ptr @.str.4720, i64 4250, ptr @.str.4721) unreachable -ok7274: +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.4718, i64 2, i64 0 }, ptr %a774 + 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 @@ -65463,44 +65518,44 @@ ok7274: %t778 = load i64, ptr %t770 %t779 = load ptr, ptr %t769 store i64 0, ptr %a780 - br label %find.cond7275 -find.cond7275: + br label %find.cond7282 +find.cond7282: %t781 = load i64, ptr %a780 %t782 = icmp slt i64 %t781, %t778 - br i1 %t782, label %find.body7276, label %find.end7279 -find.body7276: + 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.hit7277, label %find.next7278 -find.hit7277: + br i1 %t788, label %find.hit7284, label %find.next7285 +find.hit7284: store i64 %t781, ptr %a777 - br label %find.end7279 -find.next7278: + br label %find.end7286 +find.next7285: %t789 = add i64 %t781, 1 store i64 %t789, ptr %a780 - br label %find.cond7275 -find.end7279: + 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 %then7280, label %endif7282 -then7280: + br i1 %t792, label %then7287, label %endif7289 +then7287: %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) + br i1 %t794, label %panic7290, label %ok7291 +panic7290: + call void @finch_panic(ptr @.str.4723, i64 4251, ptr @.str.4724) unreachable -ok7284: +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.4721, i64 2, i64 0 }, ptr %a800 + 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 @@ -65515,24 +65570,24 @@ ok7284: %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: + br i1 %t810, label %then7292, label %endif7294 +then7292: %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) + br i1 %t812, label %panic7295, label %ok7296 +panic7295: + call void @finch_panic(ptr @.str.4726, i64 4253, ptr @.str.4727) unreachable -ok7289: +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.4724, i64 7, i64 0 }, ptr %a817 + 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.4725, i64 1, i64 0 }, ptr %a822 + 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 @@ -65541,7 +65596,7 @@ ok7289: 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 + 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 @@ -65551,11 +65606,11 @@ ok7289: 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 + 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.4728, i64 2, i64 0 }, ptr %a844 + 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 @@ -65568,7 +65623,7 @@ ok7289: 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 + 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 @@ -65578,20 +65633,20 @@ ok7289: %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 + 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 %then7290, label %endif7292 -then7290: + 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.4732, i64 2, i64 0 }, ptr %a868 + 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.4731, i64 2, i64 0 }, ptr %a872 + 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 @@ -65601,19 +65656,19 @@ then7290: 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 + 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 %endif7292 -endif7292: + br label %endif7299 +endif7299: %t884 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.4734, i64 4, i64 0 }, ptr %a886 + 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.4735, i64 1, i64 0 }, ptr %a891 + 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 @@ -65627,7 +65682,7 @@ endif7292: 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 + 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 @@ -65637,11 +65692,11 @@ endif7292: 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 + 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.4738, i64 2, i64 0 }, ptr %a918 + 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 @@ -65649,18 +65704,18 @@ endif7292: 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 + 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.4740, i64 4, i64 0 }, ptr %a933 + 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 %then7293, label %endif7295 -then7293: + 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) @@ -65670,11 +65725,11 @@ then7293: %t941 = load %S.ast.Type, ptr %a940 %t942 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t941, 1 ret %S.gen.Val %t942 -endif7295: +endif7302: %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: + 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) @@ -65691,7 +65746,7 @@ then7296: %t957 = load %S.ast.Type, ptr %a956 %t958 = insertvalue %S.gen.Val %t953, %S.ast.Type %t957, 1 ret %S.gen.Val %t958 -endif7298: +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) @@ -65700,13 +65755,13 @@ endif7298: %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 + 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 %then7299, label %endif7301 -then7299: + 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.4742, i64 9, i64 0 }) + %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 @@ -65728,29 +65783,29 @@ then7299: %t989 = load %S.ast.Type, ptr %a988 %t990 = insertvalue %S.gen.Val %t985, %S.ast.Type %t989, 1 ret %S.gen.Val %t990 -endif7301: +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.4743, i64 3, i64 0 }, ptr %a994 + 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 %then7302, label %endif7304 -then7302: + 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.4744, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4745, i64 15, i64 0 }, { ptr, i64, i64 } %t1001) + 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.4746, i64 32, i64 0 }, ptr %a1005 + 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.4747, i64 6, i64 0 }, ptr %a1010 + 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 @@ -65759,13 +65814,13 @@ then7302: 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 + 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.4749, i64 17, i64 0 }, { ptr, i64, i64 } %t1022) + %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 @@ -65773,7 +65828,7 @@ then7302: %t1028 = load %S.ast.Type, ptr %a1027 %t1029 = insertvalue %S.gen.Val %t1024, %S.ast.Type %t1028, 1 ret %S.gen.Val %t1029 -endif7304: +endif7311: %t1030 = load { ptr, i64, i64 }, ptr %a962 store { ptr, i64, i64 } %t1030, ptr %a1031 call void @finch_str_copy(ptr %a1032, ptr %a1031) @@ -65799,15 +65854,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.4754, 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.4755, 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.4756, 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.4757, 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.4758, 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 @@ -65818,27 +65873,27 @@ 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.cond7312 +find.cond7312: %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.body7313, label %find.end7316 +find.body7313: %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.hit7314, label %find.next7315 +find.hit7314: store i64 %t19, ptr %a15 - br label %find.end7309 -find.next7308: + br label %find.end7316 +find.next7315: %t27 = add i64 %t19, 1 store i64 %t27, ptr %a18 - br label %find.cond7305 -find.end7309: + br label %find.cond7312 +find.end7316: %t28 = load i64, ptr %a15 %t29 = icmp sge i64 %t28, 0 ret i1 %t29 @@ -65864,51 +65919,51 @@ entry: %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.4755, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4759, 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.4760, 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.4761, 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.4762, 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.4763, 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.4764, 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.4765, 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.4766, 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.4767, 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.4768, 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.4769, 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.4770, 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.4771, 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.4772, 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.4773, 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.4774, 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.4775, 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.4776, 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.4777, 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.4778, 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.4779, 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.4780, 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.4781, 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 @@ -65916,51 +65971,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.4782, 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.4783, 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.4784, 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.4785, 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.4786, 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.4787, 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.4788, 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.4789, 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.4790, 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.4791, 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.4792, 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.4793, 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.4794, 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.4795, 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.4796, 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.4797, 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.4798, 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.4799, 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.4800, 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.4801, 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.4802, 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.4803, 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.4804, 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 @@ -65971,53 +66026,53 @@ 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.cond7317 +find.cond7317: %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.body7318, label %find.end7321 +find.body7318: %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.hit7319, label %find.next7320 +find.hit7319: store i64 %t66, ptr %a62 - br label %find.end7314 -find.next7313: + br label %find.end7321 +find.next7320: %t74 = add i64 %t66, 1 store i64 %t74, ptr %a65 - br label %find.cond7310 -find.end7314: + br label %find.cond7317 +find.end7321: %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 %then7322, label %endif7324 +then7322: + ret { ptr, i64, i64 } { ptr @.str.4805, i64 0, i64 0 } +endif7324: %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 %range7325, label %inrange7326 +range7325: + call void @finch_panic_index(ptr @.str.4807, i64 4299, i64 %t79, i64 %t81) unreachable -inrange7319: +inrange7326: %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.4806, 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.4808, 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 @@ -66519,26 +66574,26 @@ 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 %panic7327, label %ok7328 +panic7327: + call void @finch_panic(ptr @.str.4809, i64 4304, ptr @.str.4810) unreachable -ok7321: +ok7328: %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 %t12 = load i1, ptr %t11 - br label %logic.from7322 -logic.from7322: - br i1 %t12, label %logic.rhs7323, label %logic.end7324 -logic.rhs7323: + br label %logic.from7329 +logic.from7329: + br i1 %t12, label %logic.rhs7330, label %logic.end7331 +logic.rhs7330: %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.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: %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) @@ -66547,8 +66602,8 @@ then7326: %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: + 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 @@ -66557,51 +66612,51 @@ then7329: %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: + 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 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.4808, i64 5, i64 0 }, ptr %a34 + 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 %then7332, label %endif7334 -then7332: + 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.4809, i64 86, i64 0 }) - br label %endif7334 -endif7334: + 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.4810, i64 5, i64 0 }, ptr %a41 + 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 %then7335, label %endif7337 -then7335: + 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.cond7338 -for.cond7338: + br label %for.cond7345 +for.cond7345: %t48 = load i64, ptr %a47 %t49 = icmp slt i64 %t48, %t46 - br i1 %t49, label %for.body7339, label %for.end7341 -for.body7339: + 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 %range7342, label %inrange7343 -range7342: - call void @finch_panic_index(ptr @.str.4811, i64 4315, i64 %t52, i64 %t54) + br i1 %t55, label %range7349, label %inrange7350 +range7349: + call void @finch_panic_index(ptr @.str.4815, i64 4315, i64 %t52, i64 %t54) unreachable -inrange7343: +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 @@ -66611,62 +66666,62 @@ inrange7343: %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 + 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 %then7344, label %endif7346 -then7344: + 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 %range7347, label %inrange7348 -range7347: - call void @finch_panic_index(ptr @.str.4813, i64 4317, i64 %t70, i64 %t72) + br i1 %t73, label %range7354, label %inrange7355 +range7354: + call void @finch_panic_index(ptr @.str.4817, i64 4317, i64 %t70, i64 %t72) unreachable -inrange7348: +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.4814, i64 53, i64 0 }) - br label %endif7346 -endif7346: + 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 %then7349, label %endif7351 -then7349: + 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.4815, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4816, i64 0, i64 0 }) - br label %endif7351 -endif7351: + 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.step7340 -for.step7340: + br label %for.step7347 +for.step7347: %t85 = load i64, ptr %a47 %t86 = add i64 %t85, 1 store i64 %t86, ptr %a47 - br label %for.cond7338 -for.end7341: + br label %for.cond7345 +for.end7348: %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 }) + 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 -endif7337: +endif7344: %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 + 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 %then7352, label %endif7354 -then7352: + 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 @@ -66675,11 +66730,11 @@ then7352: %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) + br i1 %t101, label %range7362, label %inrange7363 +range7362: + call void @finch_panic_index(ptr @.str.4825, i64 4329, i64 0, i64 %t100) unreachable -inrange7356: +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 @@ -66690,33 +66745,33 @@ inrange7356: %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 + 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.from7357 -logic.from7357: - br i1 %t114, label %logic.rhs7358, label %logic.end7359 -logic.rhs7358: + 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.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: + 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 %panic7364, label %ok7365 -panic7364: - call void @finch_panic(ptr @.str.4823, i64 4331, ptr @.str.4824) + br i1 %t123, label %panic7371, label %ok7372 +panic7371: + call void @finch_panic(ptr @.str.4827, i64 4331, ptr @.str.4828) unreachable -ok7365: +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 @@ -66725,62 +66780,62 @@ ok7365: store i64 %t128, ptr %a129 %t130 = load i64, ptr %a129 %t131 = icmp sge i64 %t130, 0 - br i1 %t131, label %then7366, label %endif7368 -then7366: + 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.4825, i64 3, i64 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 -endif7368: - br label %endif7363 -endif7363: +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.4826, i64 3, i64 0 }, ptr %a142 + 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.from7369 -logic.from7369: - br i1 %t144, label %logic.rhs7370, label %logic.end7371 -logic.rhs7370: + 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.4827, i64 6, i64 0 }, ptr %a148 + 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.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: + 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.4828, i64 5, i64 0 }, ptr %a155 + 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.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: + 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.4829, i64 63, i64 0 }) - br label %endif7379 -endif7379: + 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) @@ -66796,14 +66851,14 @@ endif7379: %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: +endif7361: %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 + 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 %then7380, label %endif7382 -then7380: + 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 @@ -66813,11 +66868,11 @@ then7380: %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) + br i1 %t187, label %range7390, label %inrange7391 +range7390: + call void @finch_panic_index(ptr @.str.4835, i64 4344, i64 0, i64 %t186) unreachable -inrange7384: +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 @@ -66835,11 +66890,11 @@ inrange7384: 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 + 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 %then7385, label %else7386 -then7385: + 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 @@ -66855,20 +66910,20 @@ then7385: %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: +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 %then7388, label %else7389 -then7388: + 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.4833, i64 34, i64 0 }, ptr %a228 + 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.4834, i64 6, i64 0 }, ptr %a233 + 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 @@ -66876,32 +66931,32 @@ then7388: %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 }) + %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.4836, i64 1, i64 0 }, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.4840, i64 1, i64 0 }, ptr %a248 call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) %t249 = load { ptr, i64, i64 }, ptr %a246 call void @finch.gen.emit(ptr %t225, { ptr, i64, i64 } %t249) - br label %endif7390 -else7389: + 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 %then7391, label %else7392 -then7391: + 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.4837, i64 35, i64 0 }, ptr %a256 + 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.4838, i64 6, i64 0 }, ptr %a261 + 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 @@ -66909,32 +66964,32 @@ then7391: %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 }) + %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.4840, i64 1, i64 0 }, ptr %a276 + 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 %endif7393 -else7392: + 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 %then7394, label %else7395 -then7394: + 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.4841, i64 36, i64 0 }, ptr %a284 + 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.4842, i64 9, i64 0 }, ptr %a289 + 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 @@ -66942,34 +66997,34 @@ then7394: %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 }) + %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.4844, i64 1, i64 0 }, ptr %a304 + 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 %endif7396 -else7395: + br label %endif7403 +else7402: %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 + 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 %then7397, label %else7398 -then7397: + 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.4846, i64 35, i64 0 }, ptr %a314 + 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.4847, i64 13, i64 0 }, ptr %a319 + 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 @@ -66979,40 +67034,40 @@ then7397: 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 + 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 %endif7399 -else7398: + br label %endif7406 +else7405: %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 + 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 %then7400, label %else7401 -then7400: + 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.4850, i64 8, i64 0 }, ptr %a340 + 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.4851, i64 7, i64 0 }, ptr %a345 + 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.4852, i64 35, i64 0 }, ptr %a352 + 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.4853, i64 6, i64 0 }, ptr %a357 + 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 @@ -67021,30 +67076,30 @@ then7400: 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 + 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 %endif7402 -else7401: + br label %endif7409 +else7408: %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 + 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 %then7403, label %else7404 -then7403: + 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.4856, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4857, i64 15, i64 0 }, { ptr, i64, i64 } %t374) + 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) %t375 = load ptr, ptr %a1 %t376 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4858, i64 32, i64 0 }, ptr %a378 + store { ptr, i64, i64 } { ptr @.str.4862, i64 32, i64 0 }, ptr %a378 store { ptr, i64, i64 } %t376, ptr %a379 call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) %t380 = load { ptr, i64, i64 }, ptr %a377 store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.4859, i64 6, i64 0 }, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.4863, 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 @@ -67054,84 +67109,84 @@ then7403: 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 + 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 %endif7405 -else7404: + br label %endif7412 +else7411: %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 + 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.from7406 -logic.from7406: - br i1 %t399, label %logic.rhs7407, label %logic.end7408 -logic.rhs7407: + 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 %range7409, label %inrange7410 -range7409: - call void @finch_panic_index(ptr @.str.4862, i64 4364, i64 0, i64 %t403) + br i1 %t404, label %range7416, label %inrange7417 +range7416: + call void @finch_panic_index(ptr @.str.4866, i64 4364, i64 0, i64 %t403) unreachable -inrange7410: +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.4863, i64 2, i64 0 }, ptr %a410 + 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.from7411 -logic.from7411: - br i1 %t412, label %logic.end7413, label %logic.rhs7412 -logic.rhs7412: + 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 %range7414, label %inrange7415 -range7414: - call void @finch_panic_index(ptr @.str.4864, i64 4364, i64 0, i64 %t416) + br i1 %t417, label %range7421, label %inrange7422 +range7421: + call void @finch_panic_index(ptr @.str.4868, i64 4364, i64 0, i64 %t416) unreachable -inrange7415: +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.4865, i64 4, i64 0 }, ptr %a423 + 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.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: + 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.4866, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4867, i64 15, i64 0 }, { ptr, i64, i64 } %t429) + 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.4868, i64 36, i64 0 }, ptr %a433 + 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.4869, i64 6, i64 0 }, ptr %a438 + 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 @@ -67142,92 +67197,92 @@ then7418: 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 + 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 %endif7420 -else7419: + br label %endif7427 +else7426: %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 + 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.from7421 -logic.from7421: - br i1 %t455, label %logic.end7423, label %logic.rhs7422 -logic.rhs7422: + 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.4872, i64 4, i64 0 }, ptr %a458 + 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.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: + 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.4873, i64 5, i64 0 }, ptr %a464 + 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.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: + 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.4874, i64 3, i64 0 }, ptr %a470 + 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.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: + 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.4875, i64 6, i64 0 }, ptr %a476 + 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.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: + 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.4876, i64 4, i64 0 }, ptr %a482 + 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.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: + 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.4877, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4878, i64 15, i64 0 }, { ptr, i64, i64 } %t487) + 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 @@ -67235,96 +67290,96 @@ then7441: %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: + 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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4879, i64 4372, i64 0, i64 %t497) + br i1 %t498, label %range7451, label %inrange7452 +range7451: + call void @finch_panic_index(ptr @.str.4883, i64 4372, i64 0, i64 %t497) unreachable -inrange7445: +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.4880, i64 11, i64 0 }, ptr %a506 + 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.4881, i64 9, i64 0 }, ptr %a511 + 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 %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: + 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.4882, i64 17, i64 0 }, { ptr, i64, i64 } %t514) + %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.4883, i64 3, i64 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 -endif7382: +endif7389: %t520 = load { ptr, i64, i64 }, ptr %a8 %t521 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t520) store { ptr, i64, i64 } %t521, ptr %a522 %t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %a522, i32 0, i32 1 %t524 = load i64, ptr %t523 %t525 = icmp sgt i64 %t524, 0 - br i1 %t525, label %then7446, label %endif7448 -then7446: + 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 -endif7448: +endif7455: %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 + 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.from7449 -logic.from7449: - br i1 %t535, label %logic.end7451, label %logic.rhs7450 -logic.rhs7450: + 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.4885, i64 11, i64 0 }, ptr %a538 + 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.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: + 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 @@ -67335,62 +67390,62 @@ then7453: %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) + br i1 %t550, label %range7463, label %inrange7464 +range7463: + call void @finch_panic_index(ptr @.str.4890, i64 4382, i64 0, i64 %t549) unreachable -inrange7457: +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.4887, i64 13, i64 0 }) + %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 store { ptr, i64, i64 } %t557, ptr %a558 - store { ptr, i64, i64 } { ptr @.str.4888, i64 11, i64 0 }, ptr %a559 + 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 %then7458, label %endif7460 -then7458: + 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.4889, i64 32, i64 0 }, ptr %a565 + 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.4890, i64 1, i64 0 }, ptr %a570 + 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 %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 } { 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.4892, i64 3, i64 0 }, ptr %a582 + 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.4893, i64 4, i64 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 -endif7460: +endif7467: %t588 = load ptr, ptr %a1 %t589 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t588) store { ptr, i64, i64 } %t589, ptr %a590 %t591 = load ptr, ptr %a1 %t592 = icmp eq ptr %t591, null - br i1 %t592, label %panic7461, label %ok7462 -panic7461: - call void @finch_panic(ptr @.str.4894, i64 4388, ptr @.str.4895) + br i1 %t592, label %panic7468, label %ok7469 +panic7468: + call void @finch_panic(ptr @.str.4898, i64 4388, ptr @.str.4899) unreachable -ok7462: +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 @@ -67399,25 +67454,25 @@ ok7462: 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: + 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.4896, i64 17, i64 0 }) + %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 %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) + 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.4899, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4900, i64 15, i64 0 }, { ptr, i64, i64 } %t607) + 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.4901, i64 34, i64 0 }, ptr %a611 + 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.4902, i64 6, i64 0 }, ptr %a616 + 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 @@ -67426,7 +67481,7 @@ then7463: 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 + 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 @@ -67435,71 +67490,71 @@ then7463: 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 + 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.4905, i64 12, i64 0 }, ptr %a641 + 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.4906, i64 3, i64 0 }, ptr %a646 + 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 %panic7466, label %ok7467 -panic7466: - call void @finch_panic(ptr @.str.4907, i64 4393, ptr @.str.4908) + br i1 %t650, label %panic7473, label %ok7474 +panic7473: + call void @finch_panic(ptr @.str.4911, i64 4393, ptr @.str.4912) unreachable -ok7467: +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.4909, i64 17, i64 0 }, { ptr, i64, i64 } %t653) + %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 %panic7468, label %ok7469 -panic7468: - call void @finch_panic(ptr @.str.4910, i64 4394, ptr @.str.4911) + br i1 %t656, label %panic7475, label %ok7476 +panic7475: + call void @finch_panic(ptr @.str.4914, i64 4394, ptr @.str.4915) unreachable -ok7469: +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.4912, i64 17, i64 0 }, { ptr, i64, i64 } %t659) + %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.4913, i64 3, i64 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 -endif7465: +endif7472: %t665 = load ptr, ptr %a1 %t666 = load ptr, ptr %a1 %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic7470, label %ok7471 -panic7470: - call void @finch_panic(ptr @.str.4914, i64 4397, ptr @.str.4915) + br i1 %t667, label %panic7477, label %ok7478 +panic7477: + call void @finch_panic(ptr @.str.4918, i64 4397, ptr @.str.4919) unreachable -ok7471: +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 %range7472, label %inrange7473 -range7472: - call void @finch_panic_index(ptr @.str.4916, i64 4397, i64 %t670, i64 %t672) + br i1 %t673, label %range7479, label %inrange7480 +range7479: + call void @finch_panic_index(ptr @.str.4920, i64 4397, i64 %t670, i64 %t672) unreachable -inrange7473: +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 @@ -67507,12 +67562,12 @@ inrange7473: 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 } { 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.4918, i64 6, i64 0 }, ptr %a687 + 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 @@ -67521,7 +67576,7 @@ inrange7473: call void @finch_str_concat(ptr %a690, ptr %a691, ptr %a692) %t693 = load { ptr, i64, i64 }, ptr %a690 store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.4919, i64 6, i64 0 }, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.4923, i64 6, i64 0 }, ptr %a696 call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) %t697 = load { ptr, i64, i64 }, ptr %a694 %t698 = load { ptr, i64, i64 }, ptr %a678 @@ -67530,7 +67585,7 @@ inrange7473: 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 + 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 @@ -67542,26 +67597,26 @@ inrange7473: 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 + 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.4922, i64 17, i64 0 }, { ptr, i64, i64 } %t720) + %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.4923, i64 3, i64 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 -endif7455: +endif7462: %t726 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t726, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4924, i64 10, i64 0 }, ptr %a728 + 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 %then7474, label %endif7476 -then7474: + 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 @@ -67572,15 +67627,15 @@ then7474: %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) + br i1 %t739, label %range7484, label %inrange7485 +range7484: + call void @finch_panic_index(ptr @.str.4929, i64 4403, i64 0, i64 %t738) unreachable -inrange7478: +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.4926, i64 13, i64 0 }) + %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 @@ -67589,24 +67644,24 @@ inrange7478: %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) + br i1 %t751, label %range7486, label %inrange7487 +range7486: + call void @finch_panic_index(ptr @.str.4931, i64 4404, i64 1, i64 %t750) unreachable -inrange7480: +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.4928, i64 8, i64 0 }) + %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 %panic7481, label %ok7482 -panic7481: - call void @finch_panic(ptr @.str.4929, i64 4405, ptr @.str.4930) + br i1 %t759, label %panic7488, label %ok7489 +panic7488: + call void @finch_panic(ptr @.str.4933, i64 4405, ptr @.str.4934) unreachable -ok7482: +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 @@ -67615,22 +67670,22 @@ ok7482: 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: + 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.4931, i64 17, i64 0 }) + %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.4932, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4933, i64 15, i64 0 }, { ptr, i64, i64 } %t772) + 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.4934, i64 35, i64 0 }, ptr %a776 + 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 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.4935, i64 6, i64 0 }, ptr %a781 + store { ptr, i64, i64 } { ptr @.str.4939, 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 @@ -67639,7 +67694,7 @@ then7483: 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 } { ptr @.str.4940, i64 6, i64 0 }, ptr %a790 call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) %t791 = load { ptr, i64, i64 }, ptr %a788 %t792 = load { ptr, i64, i64 }, ptr %a770 @@ -67648,55 +67703,55 @@ then7483: 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 + 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.4938, i64 12, i64 0 }, ptr %a806 + 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.4939, i64 3, i64 0 }, ptr %a811 + 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) %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) + br i1 %t815, label %panic7493, label %ok7494 +panic7493: + call void @finch_panic(ptr @.str.4944, i64 4409, ptr @.str.4945) unreachable -ok7487: +ok7494: %t816 = getelementptr inbounds %S.gen.Gen, ptr %t814, i32 0, i32 40 store { ptr, i64, i64 } %t813, ptr %t816 %t817 = load ptr, ptr %a1 %t818 = load { ptr, i64, i64 }, ptr %a770 - %t819 = call { ptr, i64, i64 } @finch.gen.load(ptr %t817, { ptr, i64, i64 } { ptr @.str.4942, i64 17, i64 0 }, { ptr, i64, i64 } %t818) + %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 %panic7488, label %ok7489 -panic7488: - call void @finch_panic(ptr @.str.4943, i64 4410, ptr @.str.4944) + br i1 %t821, label %panic7495, label %ok7496 +panic7495: + call void @finch_panic(ptr @.str.4947, i64 4410, ptr @.str.4948) unreachable -ok7489: +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.4945, i64 4, i64 0 }) + %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 -endif7485: +endif7492: %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 } { 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.4947, i64 6, i64 0 }, ptr %a833 + 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 @@ -67705,34 +67760,34 @@ endif7485: 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 + 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.4949, i64 12, i64 0 }, ptr %a849 + 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.4950, i64 3, i64 0 }, ptr %a854 + 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.4951, i64 4, i64 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 -endif7476: +endif7483: %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 + store { ptr, i64, i64 } { ptr @.str.4956, i64 11, i64 0 }, ptr %a862 %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) %t864 = icmp ne i32 %t863, 0 - br i1 %t864, label %then7490, label %endif7492 -then7490: + 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 @@ -67742,27 +67797,27 @@ then7490: %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) + br i1 %t872, label %range7500, label %inrange7501 +range7500: + call void @finch_panic_index(ptr @.str.4957, i64 4418, i64 0, i64 %t871) unreachable -inrange7494: +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.4954, i64 13, i64 0 }) + %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.4955, i64 30, i64 0 }, ptr %a884 + store { ptr, i64, i64 } { ptr @.str.4959, i64 30, i64 0 }, 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 + 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 @@ -67773,17 +67828,17 @@ inrange7494: 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 + 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 %panic7495, label %ok7496 -panic7495: - call void @finch_panic(ptr @.str.4958, i64 4421, ptr @.str.4959) + br i1 %t903, label %panic7502, label %ok7503 +panic7502: + call void @finch_panic(ptr @.str.4962, i64 4421, ptr @.str.4963) unreachable -ok7496: +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 @@ -67792,22 +67847,22 @@ ok7496: 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: + 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.4960, i64 17, i64 0 }) + %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.4961, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4962, i64 15, i64 0 }, { ptr, i64, i64 } %t916) + 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.4963, i64 36, i64 0 }, ptr %a920 + 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.4964, i64 6, i64 0 }, ptr %a925 + 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 @@ -67816,82 +67871,82 @@ then7497: 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 + 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.4966, i64 12, i64 0 }, ptr %a941 + 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.4967, i64 3, i64 0 }, ptr %a946 + 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 %panic7500, label %ok7501 -panic7500: - call void @finch_panic(ptr @.str.4968, i64 4425, ptr @.str.4969) + br i1 %t950, label %panic7507, label %ok7508 +panic7507: + call void @finch_panic(ptr @.str.4972, i64 4425, ptr @.str.4973) unreachable -ok7501: +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.4970, i64 17, i64 0 }, { ptr, i64, i64 } %t953) + %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 %panic7502, label %ok7503 -panic7502: - call void @finch_panic(ptr @.str.4971, i64 4426, ptr @.str.4972) + br i1 %t956, label %panic7509, label %ok7510 +panic7509: + call void @finch_panic(ptr @.str.4975, i64 4426, ptr @.str.4976) unreachable -ok7503: +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.4973, i64 4, i64 0 }) + %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 -endif7499: +endif7506: %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 } { 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.4975, i64 1, i64 0 }, ptr %a968 + 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.4976, i64 12, i64 0 }, ptr %a975 + store { ptr, i64, i64 } { ptr @.str.4980, i64 12, i64 0 }, ptr %a975 store { ptr, i64, i64 } %t973, ptr %a976 call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) %t977 = load { ptr, i64, i64 }, ptr %a974 store { ptr, i64, i64 } %t977, ptr %a979 - store { ptr, i64, i64 } { ptr @.str.4977, i64 3, i64 0 }, ptr %a980 + 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.4978, i64 4, i64 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 -endif7492: +endif7499: %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 + 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 %then7504, label %endif7506 -then7504: + 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 @@ -67901,27 +67956,27 @@ then7504: %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) + br i1 %t998, label %range7514, label %inrange7515 +range7514: + call void @finch_panic_index(ptr @.str.4984, i64 4434, i64 0, i64 %t997) unreachable -inrange7508: +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.4981, i64 11, i64 0 }) + %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.4982, i64 30, i64 0 }, ptr %a1010 + 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.4983, i64 6, i64 0 }, ptr %a1015 + 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 @@ -67932,33 +67987,33 @@ inrange7508: 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 + 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.4985, i64 26, i64 0 }, ptr %a1031 + 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.4986, i64 1, i64 0 }, ptr %a1036 + 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.4987, i64 3, i64 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 -endif7506: +endif7513: %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 + 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 %then7509, label %endif7511 -then7509: + br i1 %t1046, label %then7516, label %endif7518 +then7516: %t1047 = load ptr, ptr %a1 %t1048 = load %S.ast.Node, ptr %a2 %t1049 = load { ptr, i64, i64 }, ptr %a8 @@ -67969,77 +68024,77 @@ then7509: %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) + br i1 %t1055, label %range7519, label %inrange7520 +range7519: + call void @finch_panic_index(ptr @.str.4993, i64 4441, i64 0, i64 %t1054) unreachable -inrange7513: +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.4990, i64 3, i64 0 }) + %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 %range7514, label %inrange7515 -range7514: - call void @finch_panic_index(ptr @.str.4991, i64 4441, i64 0, i64 %t1063) + br i1 %t1064, label %range7521, label %inrange7522 +range7521: + call void @finch_panic_index(ptr @.str.4995, i64 4441, i64 0, i64 %t1063) unreachable -inrange7515: +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.4992, i64 13, i64 0 }) + %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.4993, i64 10, i64 0 }, ptr %a1074 + 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.4994, i64 7, i64 0 }, ptr %a1079 + 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.4995, i64 26, i64 0 }) + %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.4996, i64 20, i64 0 }, ptr %a1089 + 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.4997, i64 1, i64 0 }, ptr %a1094 + 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.4998, i64 4, i64 0 }) + %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 -endif7511: +endif7518: %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 + 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 %then7516, label %endif7518 -then7516: + 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.5000, i64 0, i64 0 }) + %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 %then7519, label %endif7521 -then7519: + 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 @@ -68049,29 +68104,29 @@ then7519: %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) + br i1 %t1117, label %range7529, label %inrange7530 +range7529: + call void @finch_panic_index(ptr @.str.5005, i64 4451, i64 0, i64 %t1116) unreachable -inrange7523: +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.5002, i64 12, i64 0 }) + %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 %endif7521 -endif7521: + 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.5003, i64 27, i64 0 }, ptr %a1128 + 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.5004, i64 6, i64 0 }, ptr %a1133 + 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 @@ -68082,26 +68137,26 @@ endif7521: 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 + 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.5006, i64 17, i64 0 }, { ptr, i64, i64 } %t1147) + %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.5007, i64 3, i64 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 -endif7518: +endif7525: %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 + 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 %then7524, label %endif7526 -then7524: + 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 @@ -68111,11 +68166,11 @@ then7524: %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) + br i1 %t1165, label %range7534, label %inrange7535 +range7534: + call void @finch_panic_index(ptr @.str.5013, i64 4459, i64 0, i64 %t1164) unreachable -inrange7528: +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 @@ -68126,12 +68181,12 @@ inrange7528: %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 } { 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.5011, i64 1, i64 0 }, ptr %a1182 + 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) @@ -68156,14 +68211,14 @@ inrange7528: %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: +endif7533: %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 + 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 %then7529, label %endif7531 -then7529: + 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 @@ -68173,11 +68228,11 @@ then7529: %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) + br i1 %t1216, label %range7539, label %inrange7540 +range7539: + call void @finch_panic_index(ptr @.str.5017, i64 4466, i64 0, i64 %t1215) unreachable -inrange7533: +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 @@ -68187,51 +68242,51 @@ inrange7533: %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 + 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 %then7534, label %endif7536 -then7534: + 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 %range7537, label %inrange7538 -range7537: - call void @finch_panic_index(ptr @.str.5015, i64 4468, i64 0, i64 %t1232) + br i1 %t1233, label %range7544, label %inrange7545 +range7544: + call void @finch_panic_index(ptr @.str.5019, i64 4468, i64 0, i64 %t1232) unreachable -inrange7538: +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.5016, i64 119, i64 0 }) - br label %endif7536 -endif7536: + 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.5017, i64 20, i64 0 }, ptr %a1241 + 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.5018, i64 1, i64 0 }, ptr %a1246 + 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.5019, i64 4, i64 0 }) + %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 -endif7531: +endif7538: %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) + br i1 %t1252, label %panic7546, label %ok7547 +panic7546: + call void @finch_panic(ptr @.str.5024, i64 4473, ptr @.str.5025) unreachable -ok7540: +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 @@ -68239,91 +68294,91 @@ ok7540: store i64 %t1256, ptr %a1257 %t1258 = load i64, ptr %a1257 %t1259 = icmp sge i64 %t1258, 0 - br i1 %t1259, label %then7541, label %endif7543 -then7541: + 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 %then7544, label %endif7546 -then7544: + 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.5022, i64 1, i64 0 }, ptr %a1269 + 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.5023, i64 47, i64 0 }, ptr %a1274 + 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 %endif7546 -endif7546: + 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.5024, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5025, i64 0, i64 0 }) + %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 -endif7543: +endif7550: %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) + br i1 %t1283, label %panic7554, label %ok7555 +panic7554: + call void @finch_panic(ptr @.str.5030, i64 4480, ptr @.str.5031) unreachable -ok7548: +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.5028, i64 0, i64 0 }, i1 false) + %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 %then7549, label %endif7551 -then7549: + 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 -endif7551: +endif7558: %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) + br i1 %t1298, label %panic7559, label %ok7560 +panic7559: + call void @finch_panic(ptr @.str.5033, i64 4484, ptr @.str.5034) unreachable -ok7553: +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.5031, i64 0, i64 0 }, i1 true) + %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 %then7554, label %endif7556 -then7554: + 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 %then7557, label %endif7559 -then7557: + 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.5032, i64 1, i64 0 }, ptr %a1313 + 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.5033, i64 42, i64 0 }, ptr %a1318 + 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 @@ -68332,24 +68387,24 @@ then7557: 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 + 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 %endif7559 -endif7559: + 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.cond7560 -each.cond7560: + 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.body7561, label %each.end7563 -each.body7561: + 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 @@ -68366,21 +68421,21 @@ each.body7561: %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: + br label %each.step7569 +each.step7569: %t1350 = load i64, ptr %a1332 %t1351 = add i64 %t1350, 1 store i64 %t1351, ptr %a1332 - br label %each.cond7560 -each.end7563: + 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 %panic7564, label %ok7565 -panic7564: - call void @finch_panic(ptr @.str.5035, i64 4493, ptr @.str.5036) + br i1 %t1354, label %panic7571, label %ok7572 +panic7571: + call void @finch_panic(ptr @.str.5039, i64 4493, ptr @.str.5040) unreachable -ok7565: +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 @@ -68402,15 +68457,15 @@ ok7565: %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: +endif7563: %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) + br i1 %t1377, label %panic7573, label %ok7574 +panic7573: + call void @finch_panic(ptr @.str.5041, i64 4496, ptr @.str.5042) unreachable -ok7567: +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 @@ -68418,25 +68473,25 @@ ok7567: store i64 %t1381, ptr %a1382 %t1383 = load i64, ptr %a1382 %t1384 = icmp sge i64 %t1383, 0 - br i1 %t1384, label %then7568, label %endif7570 -then7568: + br i1 %t1384, label %then7575, label %endif7577 +then7575: %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) + br i1 %t1386, label %panic7578, label %ok7579 +panic7578: + call void @finch_panic(ptr @.str.5043, i64 4498, ptr @.str.5044) unreachable -ok7572: +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 %range7573, label %inrange7574 -range7573: - call void @finch_panic_index(ptr @.str.5041, i64 4498, i64 %t1388, i64 %t1390) + br i1 %t1391, label %range7580, label %inrange7581 +range7580: + call void @finch_panic_index(ptr @.str.5045, i64 4498, i64 %t1388, i64 %t1390) unreachable -inrange7574: +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 @@ -68446,45 +68501,45 @@ inrange7574: 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) + br i1 %t1400, label %panic7582, label %ok7583 +panic7582: + call void @finch_panic(ptr @.str.5046, i64 4499, ptr @.str.5047) unreachable -ok7576: +ok7583: %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: + 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.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: + 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 %panic7584, label %ok7585 -panic7584: - call void @finch_panic(ptr @.str.5044, i64 4500, ptr @.str.5045) + br i1 %t1408, label %panic7591, label %ok7592 +panic7591: + call void @finch_panic(ptr @.str.5048, i64 4500, ptr @.str.5049) unreachable -ok7585: +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 %range7586, label %inrange7587 -range7586: - call void @finch_panic_index(ptr @.str.5046, i64 4500, i64 %t1411, i64 %t1413) + br i1 %t1414, label %range7593, label %inrange7594 +range7593: + call void @finch_panic_index(ptr @.str.5050, i64 4500, i64 %t1411, i64 %t1413) unreachable -inrange7587: +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 @@ -68493,11 +68548,11 @@ inrange7587: %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) + br i1 %t1422, label %range7595, label %inrange7596 +range7595: + call void @finch_panic_index(ptr @.str.5051, i64 4500, i64 %t1419, i64 %t1421) unreachable -inrange7589: +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 @@ -68513,17 +68568,17 @@ inrange7589: %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 } { 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.5049, i64 3, i64 0 }, ptr %a1444 + 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.5050, i64 2, i64 0 }, ptr %a1448 + 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 @@ -68531,27 +68586,27 @@ inrange7589: 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 + 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 %panic7590, label %ok7591 -panic7590: - call void @finch_panic(ptr @.str.5052, i64 4501, ptr @.str.5053) + br i1 %t1460, label %panic7597, label %ok7598 +panic7597: + call void @finch_panic(ptr @.str.5056, i64 4501, ptr @.str.5057) unreachable -ok7591: +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 %range7592, label %inrange7593 -range7592: - call void @finch_panic_index(ptr @.str.5054, i64 4501, i64 %t1463, i64 %t1465) + br i1 %t1466, label %range7599, label %inrange7600 +range7599: + call void @finch_panic_index(ptr @.str.5058, i64 4501, i64 %t1463, i64 %t1465) unreachable -inrange7593: +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 @@ -68560,8 +68615,8 @@ inrange7593: %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: + 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 @@ -68571,15 +68626,15 @@ endif7583: %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: +endif7577: %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) + br i1 %t1484, label %panic7601, label %ok7602 +panic7601: + call void @finch_panic(ptr @.str.5059, i64 4505, ptr @.str.5060) unreachable -ok7595: +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 @@ -68587,52 +68642,52 @@ ok7595: store i64 %t1488, ptr %a1489 %t1490 = load i64, ptr %a1489 %t1491 = icmp sge i64 %t1490, 0 - br i1 %t1491, label %then7596, label %endif7598 -then7596: + 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 -endif7598: +endif7605: %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) + br i1 %t1497, label %panic7606, label %ok7607 +panic7606: + call void @finch_panic(ptr @.str.5061, i64 4509, ptr @.str.5062) unreachable -ok7600: +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 %then7601, label %endif7603 -then7601: + br i1 %t1503, label %then7608, label %endif7610 +then7608: %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) + br i1 %t1507, label %panic7611, label %ok7612 +panic7611: + call void @finch_panic(ptr @.str.5063, i64 4510, ptr @.str.5064) unreachable -ok7605: +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.missing7606, label %map.found7607 -map.missing7606: + 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.5061, i64 4510, ptr %a1514) + call void @finch_map_missing(ptr @.str.5065, i64 4510, ptr %a1514) unreachable -map.found7607: +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 @@ -68640,15 +68695,15 @@ map.found7607: %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: +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.5062, i64 1, i64 0 }, { ptr, i64, i64 } %t1523) + %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 %then7608, label %endif7610 -then7608: + 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 @@ -68658,36 +68713,36 @@ then7608: %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: +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 %then7611, label %endif7613 -then7611: + br i1 %t1538, label %then7618, label %endif7620 +then7618: %t1539 = load ptr, ptr %a1 %t1540 = load %S.ast.Node, ptr %a2 %t1541 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5063, i64 1, i64 0 }, ptr %a1543 + store { ptr, i64, i64 } { 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.5064, i64 31, i64 0 }, ptr %a1548 + 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 %endif7613 -endif7613: + 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.5065, i64 28, i64 0 }, ptr %a1554 + 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.5066, i64 1, i64 0 }, ptr %a1559 + 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 @@ -68748,21 +68803,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 %panic7621, label %ok7622 +panic7621: + call void @finch_panic(ptr @.str.5071, i64 4524, ptr @.str.5072) unreachable -ok7615: +ok7622: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14 %t11 = load i64, ptr %a2 %t12 = load { ptr, i64, i64 }, ptr %t10 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range7616, label %inrange7617 -range7616: - call void @finch_panic_index(ptr @.str.5069, i64 4524, i64 %t11, i64 %t13) + br i1 %t14, label %range7623, label %inrange7624 +range7623: + call void @finch_panic_index(ptr @.str.5073, i64 4524, i64 %t11, i64 %t13) unreachable -inrange7617: +inrange7624: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.FnSig, ptr %t15, i64 %t11 %t17 = load %S.gen.FnSig, ptr %t16 @@ -68774,28 +68829,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.from7625 +logic.from7625: + br i1 %t25, label %logic.rhs7626, label %logic.end7627 +logic.rhs7626: %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.5074, 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.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: %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.5075, i64 52, i64 0 }) + br label %endif7631 +endif7631: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a3 %t37 = load %S.gen.FnSig, ptr %a21 @@ -68813,11 +68868,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 %then7632, label %endif7634 +then7632: %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.5076, 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 @@ -68828,18 +68883,18 @@ 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: + 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.cond7628 -for.cond7628: + br label %for.cond7635 +for.cond7635: %t64 = load i64, ptr %a63 %t65 = icmp slt i64 %t64, %t62 - br i1 %t65, label %for.body7629, label %for.end7631 -for.body7629: + 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 @@ -68847,11 +68902,11 @@ for.body7629: %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 i1 %t72, label %range7639, label %inrange7640 +range7639: + call void @finch_panic_index(ptr @.str.5077, i64 4535, i64 %t69, i64 %t71) unreachable -inrange7633: +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 @@ -68867,11 +68922,11 @@ inrange7633: %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) + br i1 %t87, label %range7641, label %inrange7642 +range7641: + call void @finch_panic_index(ptr @.str.5078, i64 4536, i64 %t84, i64 %t86) unreachable -inrange7635: +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 @@ -68881,11 +68936,11 @@ inrange7635: %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) + br i1 %t96, label %range7643, label %inrange7644 +range7643: + call void @finch_panic_index(ptr @.str.5079, i64 4536, i64 %t93, i64 %t95) unreachable -inrange7637: +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 @@ -68895,20 +68950,20 @@ inrange7637: %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) + br i1 %t105, label %range7645, label %inrange7646 +range7645: + call void @finch_panic_index(ptr @.str.5081, i64 4536, i64 %t102, i64 %t104) unreachable -inrange7639: +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.5076, i64 10, i64 0 }, ptr %a110 + 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.5078, i64 1, i64 0 }, ptr %a115 + 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) @@ -68919,43 +68974,43 @@ inrange7639: %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) + br i1 %t124, label %range7647, label %inrange7648 +range7647: + call void @finch_panic_index(ptr @.str.5083, i64 4538, i64 %t121, i64 %t123) unreachable -inrange7641: +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.from7642 -logic.from7642: - br i1 %t128, label %logic.rhs7643, label %logic.end7644 -logic.rhs7643: + 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.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: + 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.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: + 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 @@ -68963,13 +69018,13 @@ logic.rhs7651: 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: + 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 @@ -68985,8 +69040,8 @@ then7654: %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: + 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 @@ -68994,17 +69049,17 @@ endif7656: %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) + br i1 %t165, label %range7664, label %inrange7665 +range7664: + call void @finch_panic_index(ptr @.str.5084, i64 4541, i64 %t162, i64 %t164) unreachable -inrange7658: +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.5081, i64 1, i64 0 }, ptr %a172 + 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 @@ -69020,13 +69075,13 @@ inrange7658: %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: + br label %for.step7637 +for.step7637: %t184 = load i64, ptr %a63 %t185 = add i64 %t184, 1 store i64 %t185, ptr %a63 - br label %for.cond7628 -for.end7631: + 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 @@ -69153,17 +69208,17 @@ 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.from7666 +logic.from7666: + br i1 %t7, label %logic.rhs7667, label %logic.end7668 +logic.rhs7667: %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 %panic7669, label %ok7670 +panic7669: + call void @finch_panic(ptr @.str.5086, i64 4548, ptr @.str.5087) unreachable -ok7663: +ok7670: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 39 %t11 = load { ptr, i64, i64 }, ptr %t10 %t12 = load %S.ast.Node, ptr %a3 @@ -69172,22 +69227,22 @@ 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: + 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.5084, i64 1, i64 0 }, ptr %a23 + 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.5085, i64 39, i64 0 }, ptr %a28 + 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 @@ -69196,7 +69251,7 @@ then7665: 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 + 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 @@ -69205,7 +69260,7 @@ then7665: 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 } { ptr @.str.5091, i64 27, i64 0 }, ptr %a46 call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 %t48 = load { ptr, i64, i64 }, ptr %a5 @@ -69214,21 +69269,21 @@ then7665: 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 + 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 %endif7667 -endif7667: + 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.5089, i64 5, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5093, i64 5, i64 0 }, ptr %a61 store { ptr, i64, i64 } %t59, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5090, i64 1, i64 0 }, ptr %a66 + 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 @@ -69238,11 +69293,11 @@ endif7667: 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.5091, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.5095, 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 + 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 @@ -69250,14 +69305,14 @@ endif7667: 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.5093, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.5097, 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: + 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) @@ -69266,12 +69321,12 @@ then7668: %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 } { ptr @.str.5098, i64 13, i64 0 }, ptr %a102 store { ptr, i64, i64 } %t100, ptr %a103 call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) %t104 = load { ptr, i64, i64 }, ptr %a101 store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5095, i64 1, i64 0 }, ptr %a107 + 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 @@ -69280,41 +69335,41 @@ then7668: 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 + 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.5097, i64 7, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.5101, i64 7, i64 0 }, ptr %a123 store { ptr, i64, i64 } %t121, ptr %a124 call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) %t125 = load { ptr, i64, i64 }, ptr %a122 store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.5098, i64 6, i64 0 }, ptr %a128 + 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 %panic7671, label %ok7672 -panic7671: - call void @finch_panic(ptr @.str.5099, i64 4555, ptr @.str.5100) + br i1 %t132, label %panic7678, label %ok7679 +panic7678: + call void @finch_panic(ptr @.str.5103, i64 4555, ptr @.str.5104) unreachable -ok7672: +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.5101, i64 13, i64 0 }, ptr %a139 + 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.5102, i64 1, i64 0 }, ptr %a144 + 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 @@ -69323,28 +69378,28 @@ ok7672: 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 + 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 %panic7673, label %ok7674 -panic7673: - call void @finch_panic(ptr @.str.5104, i64 4556, ptr @.str.5105) + br i1 %t157, label %panic7680, label %ok7681 +panic7680: + call void @finch_panic(ptr @.str.5108, i64 4556, ptr @.str.5109) unreachable -ok7674: +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.5106, i64 4, i64 0 }, ptr %a163 + 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 %then7675, label %endif7677 -then7675: + 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 @@ -69352,17 +69407,17 @@ then7675: %t170 = load %S.ast.Type, ptr %a169 %t171 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t170, 1 ret %S.gen.Val %t171 -endif7677: +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.5107, i64 13, i64 0 }, ptr %a177 + 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.5108, i64 1, i64 0 }, ptr %a182 + 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 @@ -69371,7 +69426,7 @@ endif7677: 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 + 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) @@ -69388,16 +69443,16 @@ endif7677: %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: +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.5110, i64 4, i64 0 }, ptr %a210 + 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 %then7678, label %endif7680 -then7678: + 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) @@ -69408,7 +69463,7 @@ then7678: %t219 = load %S.ast.Type, ptr %a218 %t220 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t219, 1 ret %S.gen.Val %t220 -endif7680: +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) @@ -69579,21 +69634,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 %panic7688, label %ok7689 +panic7688: + call void @finch_panic(ptr @.str.5115, i64 4570, ptr @.str.5116) unreachable -ok7682: +ok7689: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 %t9 = load i64, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range7683, label %inrange7684 -range7683: - call void @finch_panic_index(ptr @.str.5113, i64 4570, i64 %t9, i64 %t11) + br i1 %t12, label %range7690, label %inrange7691 +range7690: + call void @finch_panic_index(ptr @.str.5117, i64 4570, i64 %t9, i64 %t11) unreachable -inrange7684: +inrange7691: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 %t15 = load %S.gen.StructDef, ptr %t14 @@ -69605,26 +69660,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 %then7692, label %endif7694 +then7692: %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 %panic7695, label %ok7696 +panic7695: + call void @finch_panic(ptr @.str.5118, i64 4573, ptr @.str.5119) unreachable -ok7689: +ok7696: %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 %range7697, label %inrange7698 +range7697: + call void @finch_panic_index(ptr @.str.5120, i64 4573, i64 %t28, i64 %t30) unreachable -inrange7691: +inrange7698: %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 @@ -69633,11 +69688,11 @@ 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 %range7699, label %inrange7700 +range7699: + call void @finch_panic_index(ptr @.str.5121, i64 4573, i64 %t36, i64 %t38) unreachable -inrange7693: +inrange7700: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -69645,9 +69700,9 @@ inrange7693: call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) %t45 = load %S.ast.Node, ptr %a44 store %S.ast.Node %t45, ptr %a20 - br label %endif7687 -endif7687: - %t46 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5118, i64 6, i64 0 }, 0 + 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 @@ -69668,40 +69723,40 @@ endif7687: %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: + 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 %range7697, label %inrange7698 -range7697: - call void @finch_panic_index(ptr @.str.5119, i64 4577, i64 0, i64 %t68) + br i1 %t69, label %range7704, label %inrange7705 +range7704: + call void @finch_panic_index(ptr @.str.5123, i64 4577, i64 0, i64 %t68) unreachable -inrange7698: +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.rend7699 -logic.rend7699: - br label %logic.end7696 -logic.end7696: - %t75 = phi i1 [ false, %logic.from7694 ], [ %t74, %logic.rend7699 ] + 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.cond7700 -for.cond7700: + br label %for.cond7707 +for.cond7707: %t82 = load i64, ptr %a81 %t83 = icmp slt i64 %t82, %t80 - br i1 %t83, label %for.body7701, label %for.end7703 -for.body7701: + 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 @@ -69710,31 +69765,31 @@ for.body7701: %t88 = getelementptr inbounds i64, ptr %t87, i64 %t85 store i64 -1, ptr %t88 store i64 %t86, ptr %t84 - br label %for.step7702 -for.step7702: + br label %for.step7709 +for.step7709: %t89 = load i64, ptr %a81 %t90 = add i64 %t89, 1 store i64 %t90, ptr %a81 - br label %for.cond7700 -for.end7703: + 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.cond7704 -for.cond7704: + br label %for.cond7711 +for.cond7711: %t94 = load i64, ptr %a93 %t95 = icmp slt i64 %t94, %t92 - br i1 %t95, label %for.body7705, label %for.end7707 -for.body7705: + 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 %range7708, label %inrange7709 -range7708: - call void @finch_panic_index(ptr @.str.5120, i64 4583, i64 %t96, i64 %t98) + br i1 %t99, label %range7715, label %inrange7716 +range7715: + call void @finch_panic_index(ptr @.str.5124, i64 4583, i64 %t96, i64 %t98) unreachable -inrange7709: +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 @@ -69742,42 +69797,42 @@ inrange7709: %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: + 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 %range7713, label %inrange7714 -range7713: - call void @finch_panic_index(ptr @.str.5121, i64 4584, i64 %t108, i64 %t110) + br i1 %t111, label %range7720, label %inrange7721 +range7720: + call void @finch_panic_index(ptr @.str.5125, i64 4584, i64 %t108, i64 %t110) unreachable -inrange7714: +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.5122, i64 69, i64 0 }) - br label %endif7712 -endif7712: + 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 %then7715, label %endif7717 -then7715: + 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 %then7718, label %endif7720 -then7718: + 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.5123, i64 5, i64 0 }, ptr %a129 + 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 @@ -69790,7 +69845,7 @@ then7718: 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 + 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 @@ -69802,7 +69857,7 @@ then7718: 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 + 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 @@ -69812,38 +69867,38 @@ then7718: 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 + 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 %endif7720 -endif7720: + 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 %range7721, label %inrange7722 -range7721: - call void @finch_panic_index(ptr @.str.5127, i64 4590, i64 %t167, i64 %t169) + br i1 %t170, label %range7728, label %inrange7729 +range7728: + call void @finch_panic_index(ptr @.str.5131, i64 4590, i64 %t167, i64 %t169) unreachable -inrange7722: +inrange7729: %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: + 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 %range7723, label %inrange7724 -range7723: - call void @finch_panic_index(ptr @.str.5128, i64 4593, i64 %t175, i64 %t177) + br i1 %t178, label %range7730, label %inrange7731 +range7730: + call void @finch_panic_index(ptr @.str.5132, i64 4593, i64 %t175, i64 %t177) unreachable -inrange7724: +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 @@ -69851,61 +69906,61 @@ inrange7724: %t183 = load i64, ptr %t174 %t184 = load ptr, ptr %t173 store i64 0, ptr %a185 - br label %find.cond7725 -find.cond7725: + br label %find.cond7732 +find.cond7732: %t186 = load i64, ptr %a185 %t187 = icmp slt i64 %t186, %t183 - br i1 %t187, label %find.body7726, label %find.end7729 -find.body7726: + 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.hit7727, label %find.next7728 -find.hit7727: + br i1 %t193, label %find.hit7734, label %find.next7735 +find.hit7734: store i64 %t186, ptr %a182 - br label %find.end7729 -find.next7728: + br label %find.end7736 +find.next7735: %t194 = add i64 %t186, 1 store i64 %t194, ptr %a185 - br label %find.cond7725 -find.end7729: + br label %find.cond7732 +find.end7736: %t195 = load i64, ptr %a182 store i64 %t195, ptr %a196 %t197 = load i64, ptr %a196 %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then7730, label %endif7732 -then7730: + 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 %range7733, label %inrange7734 -range7733: - call void @finch_panic_index(ptr @.str.5129, i64 4595, i64 %t200, i64 %t202) + br i1 %t203, label %range7740, label %inrange7741 +range7740: + call void @finch_panic_index(ptr @.str.5133, i64 4595, i64 %t200, i64 %t202) unreachable -inrange7734: +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.5130, i64 15, i64 0 }, ptr %a211 + 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 %range7735, label %inrange7736 -range7735: - call void @finch_panic_index(ptr @.str.5131, i64 4595, i64 %t213, i64 %t215) + br i1 %t216, label %range7742, label %inrange7743 +range7742: + call void @finch_panic_index(ptr @.str.5135, i64 4595, i64 %t213, i64 %t215) unreachable -inrange7736: +inrange7743: %t217 = extractvalue { ptr, i64, i64 } %t214, 0 %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i64 %t213 %t219 = load { ptr, i64, i64 }, ptr %t218 @@ -69914,37 +69969,37 @@ inrange7736: 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 + 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 %endif7732 -endif7732: + 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 %range7737, label %inrange7738 -range7737: - call void @finch_panic_index(ptr @.str.5133, i64 4597, i64 %t228, i64 %t230) + br i1 %t231, label %range7744, label %inrange7745 +range7744: + call void @finch_panic_index(ptr @.str.5137, i64 4597, i64 %t228, i64 %t230) unreachable -inrange7738: +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 %then7739, label %endif7741 -then7739: + 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 %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.5134, i64 4598, i64 %t237, i64 %t239) + br i1 %t240, label %range7749, label %inrange7750 +range7749: + call void @finch_panic_index(ptr @.str.5138, i64 4598, i64 %t237, i64 %t239) unreachable -inrange7743: +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 @@ -69952,66 +70007,66 @@ inrange7743: %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) + br i1 %t247, label %range7751, label %inrange7752 +range7751: + call void @finch_panic_index(ptr @.str.5140, i64 4598, i64 %t244, i64 %t246) unreachable -inrange7745: +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.5135, i64 11, i64 0 }, ptr %a252 + 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.5137, i64 16, i64 0 }, ptr %a257 + 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 %endif7741 -endif7741: + 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 %range7746, label %inrange7747 -range7746: - call void @finch_panic_index(ptr @.str.5138, i64 4600, i64 %t260, i64 %t262) + br i1 %t263, label %range7753, label %inrange7754 +range7753: + call void @finch_panic_index(ptr @.str.5142, i64 4600, i64 %t260, i64 %t262) unreachable -inrange7747: +inrange7754: %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: + br label %for.step7713 +for.step7713: %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 + 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.cond7748 -for.cond7748: + br label %for.cond7755 +for.cond7755: %t273 = load i64, ptr %a272 %t274 = icmp slt i64 %t273, %t271 - br i1 %t274, label %for.body7749, label %for.end7751 -for.body7749: + 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 %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 %range7759, label %inrange7760 +range7759: + call void @finch_panic_index(ptr @.str.5144, i64 4604, i64 %t276, i64 %t278) unreachable -inrange7753: +inrange7760: %t280 = extractvalue { ptr, i64, i64 } %t277, 0 %t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276 %t282 = load %S.ast.Type, ptr %t281 @@ -70024,39 +70079,39 @@ inrange7753: %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) + br i1 %t291, label %range7761, label %inrange7762 +range7761: + call void @finch_panic_index(ptr @.str.5145, i64 4606, i64 %t288, i64 %t290) unreachable -inrange7755: +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 %then7756, label %else7757 -then7756: + 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 %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 %range7766, label %inrange7767 +range7766: + call void @finch_panic_index(ptr @.str.5146, i64 4607, i64 %t298, i64 %t300) unreachable -inrange7760: +inrange7767: %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) + br i1 %t307, label %range7768, label %inrange7769 +range7768: + call void @finch_panic_index(ptr @.str.5147, i64 4607, i64 %t304, i64 %t306) unreachable -inrange7762: +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 @@ -70067,22 +70122,22 @@ inrange7762: %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) + br i1 %t317, label %range7770, label %inrange7771 +range7770: + call void @finch_panic_index(ptr @.str.5148, i64 4607, i64 %t314, i64 %t316) unreachable -inrange7764: +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 %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 %range7772, label %inrange7773 +range7772: + call void @finch_panic_index(ptr @.str.5149, i64 4607, i64 %t320, i64 %t322) unreachable -inrange7766: +inrange7773: %t324 = extractvalue { ptr, i64, i64 } %t321, 0 %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 %t326 = load %S.ast.Node, ptr %t325 @@ -70091,63 +70146,63 @@ inrange7766: %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) + br i1 %t331, label %range7774, label %inrange7775 +range7774: + call void @finch_panic_index(ptr @.str.5151, i64 4607, i64 %t328, i64 %t330) unreachable -inrange7768: +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.5146, i64 11, i64 0 }, ptr %a336 + 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.5148, i64 1, i64 0 }, ptr %a341 + 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 %endif7758 -else7757: + 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.from7769 -logic.from7769: - br i1 %t346, label %logic.rhs7770, label %logic.end7771 -logic.rhs7770: + 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 %range7772, label %inrange7773 -range7772: - call void @finch_panic_index(ptr @.str.5149, i64 4608, i64 %t348, i64 %t350) + br i1 %t351, label %range7779, label %inrange7780 +range7779: + call void @finch_panic_index(ptr @.str.5153, i64 4608, i64 %t348, i64 %t350) unreachable -inrange7773: +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.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: + 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 %panic7778, label %ok7779 -panic7778: - call void @finch_panic(ptr @.str.5150, i64 4610, ptr @.str.5151) + br i1 %t360, label %panic7785, label %ok7786 +panic7785: + call void @finch_panic(ptr @.str.5154, i64 4610, ptr @.str.5155) unreachable -ok7779: +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 @@ -70156,11 +70211,11 @@ ok7779: 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) + br i1 %t368, label %panic7787, label %ok7788 +panic7787: + call void @finch_panic(ptr @.str.5156, i64 4611, ptr @.str.5157) unreachable -ok7781: +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 @@ -70169,11 +70224,11 @@ ok7781: 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) + br i1 %t376, label %panic7789, label %ok7790 +panic7789: + call void @finch_panic(ptr @.str.5158, i64 4612, ptr @.str.5159) unreachable -ok7783: +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 @@ -70182,11 +70237,11 @@ ok7783: 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) + br i1 %t384, label %panic7791, label %ok7792 +panic7791: + call void @finch_panic(ptr @.str.5160, i64 4613, ptr @.str.5161) unreachable -ok7785: +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 @@ -70197,11 +70252,11 @@ ok7785: %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) + br i1 %t394, label %panic7793, label %ok7794 +panic7793: + call void @finch_panic(ptr @.str.5162, i64 4614, ptr @.str.5163) unreachable -ok7787: +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) @@ -70211,11 +70266,11 @@ ok7787: %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) + br i1 %t402, label %panic7795, label %ok7796 +panic7795: + call void @finch_panic(ptr @.str.5164, i64 4615, ptr @.str.5165) unreachable -ok7789: +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) @@ -70225,11 +70280,11 @@ ok7789: %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) + br i1 %t410, label %panic7797, label %ok7798 +panic7797: + call void @finch_panic(ptr @.str.5166, i64 4617, ptr @.str.5167) unreachable -ok7791: +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) @@ -70241,11 +70296,11 @@ ok7791: %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) + br i1 %t419, label %panic7799, label %ok7800 +panic7799: + call void @finch_panic(ptr @.str.5168, i64 4619, ptr @.str.5169) unreachable -ok7793: +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) @@ -70258,22 +70313,22 @@ ok7793: %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) + br i1 %t430, label %range7801, label %inrange7802 +range7801: + call void @finch_panic_index(ptr @.str.5170, i64 4620, i64 %t427, i64 %t429) unreachable -inrange7795: +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 %range7796, label %inrange7797 -range7796: - call void @finch_panic_index(ptr @.str.5167, i64 4620, i64 0, i64 %t435) + br i1 %t436, label %range7803, label %inrange7804 +range7803: + call void @finch_panic_index(ptr @.str.5171, i64 4620, i64 0, i64 %t435) unreachable -inrange7797: +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 @@ -70285,22 +70340,22 @@ inrange7797: %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) + br i1 %t447, label %range7805, label %inrange7806 +range7805: + call void @finch_panic_index(ptr @.str.5172, i64 4620, i64 %t444, i64 %t446) unreachable -inrange7799: +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 %range7800, label %inrange7801 -range7800: - call void @finch_panic_index(ptr @.str.5169, i64 4620, i64 0, i64 %t452) + br i1 %t453, label %range7807, label %inrange7808 +range7807: + call void @finch_panic_index(ptr @.str.5173, i64 4620, i64 0, i64 %t452) unreachable -inrange7801: +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 @@ -70309,20 +70364,20 @@ inrange7801: %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) + br i1 %t461, label %range7809, label %inrange7810 +range7809: + call void @finch_panic_index(ptr @.str.5175, i64 4620, i64 %t458, i64 %t460) unreachable -inrange7803: +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.5170, i64 16, i64 0 }, ptr %a466 + 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.5172, i64 1, i64 0 }, ptr %a471 + 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) @@ -70330,11 +70385,11 @@ inrange7803: %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) + br i1 %t476, label %panic7811, label %ok7812 +panic7811: + call void @finch_panic(ptr @.str.5177, i64 4621, ptr @.str.5178) unreachable -ok7805: +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) @@ -70343,11 +70398,11 @@ ok7805: %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) + br i1 %t483, label %panic7813, label %ok7814 +panic7813: + call void @finch_panic(ptr @.str.5179, i64 4622, ptr @.str.5180) unreachable -ok7807: +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) @@ -70356,11 +70411,11 @@ ok7807: %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) + br i1 %t490, label %panic7815, label %ok7816 +panic7815: + call void @finch_panic(ptr @.str.5181, i64 4623, ptr @.str.5182) unreachable -ok7809: +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) @@ -70369,30 +70424,30 @@ ok7809: %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) + br i1 %t497, label %panic7817, label %ok7818 +panic7817: + call void @finch_panic(ptr @.str.5183, i64 4624, ptr @.str.5184) unreachable -ok7811: +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 %endif7777 -else7776: - br label %for.step7750 -endif7777: - br label %endif7758 -endif7758: + 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.5181, i64 12, i64 0 }, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5185, i64 12, i64 0 }, ptr %a505 store { ptr, i64, i64 } %t503, ptr %a506 call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) %t507 = load { ptr, i64, i64 }, ptr %a504 store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.5182, i64 1, i64 0 }, ptr %a510 + 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 @@ -70401,7 +70456,7 @@ endif7758: 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 + 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 @@ -70412,7 +70467,7 @@ endif7758: 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 + 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 @@ -70423,7 +70478,7 @@ endif7758: 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 + 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 @@ -70431,11 +70486,11 @@ endif7758: %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) + br i1 %t547, label %range7819, label %inrange7820 +range7819: + call void @finch_panic_index(ptr @.str.5190, i64 4628, i64 %t544, i64 %t546) unreachable -inrange7813: +inrange7820: %t548 = extractvalue { ptr, i64, i64 } %t545, 0 %t549 = getelementptr inbounds i64, ptr %t548, i64 %t544 %t550 = load i64, ptr %t549 @@ -70447,13 +70502,13 @@ inrange7813: %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: + br label %for.step7757 +for.step7757: %t558 = load i64, ptr %a272 %t559 = add i64 %t558, 1 store i64 %t559, ptr %a272 - br label %for.cond7748 -for.end7751: + 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) @@ -70482,18 +70537,18 @@ entry: 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 %panic7821, label %ok7822 +panic7821: + call void @finch_panic(ptr @.str.5191, i64 4637, ptr @.str.5192) unreachable -ok7815: +ok7822: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 %t7 = load i1, ptr %t6 %t8 = xor i1 %t7, true - br i1 %t8, label %then7816, label %endif7818 -then7816: + br i1 %t8, label %then7823, label %endif7825 +then7823: ret void -endif7818: +endif7825: %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 @@ -70503,8 +70558,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 %then7826, label %endif7828 +then7826: %t18 = load ptr, ptr %a1 %t19 = load %S.ast.Node, ptr %a2 %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 @@ -70515,9 +70570,9 @@ 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.5193, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7828 +endif7828: ret void } @@ -70756,11 +70811,11 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %t3 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range7822, label %inrange7823 -range7822: - call void @finch_panic_index(ptr @.str.5190, i64 4647, i64 0, i64 %t5) + br i1 %t6, label %range7829, label %inrange7830 +range7829: + call void @finch_panic_index(ptr @.str.5194, i64 4647, i64 0, i64 %t5) unreachable -inrange7823: +inrange7830: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -70771,25 +70826,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.5195, 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.from7831 +logic.from7831: + br i1 %t19, label %logic.rhs7832, label %logic.end7833 +logic.rhs7832: %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.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: %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 @@ -70800,17 +70855,17 @@ 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 %then7838, label %endif7840 +then7838: %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.5196, 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.5197, 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 @@ -70819,12 +70874,12 @@ then7831: 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 + 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 %endif7833 -endif7833: + 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 @@ -70833,14 +70888,14 @@ endif7833: store i64 %t60, ptr %a61 %t62 = load i64, ptr %a61 %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7834, label %endif7836 -then7834: + 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.5195, i64 1, i64 0 }, ptr %a70 + 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 @@ -70849,25 +70904,25 @@ then7834: 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 }) + %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 -endif7836: +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.5198, i64 0, i64 0 }, i1 false) + %t83 = call i64 @finch.gen.findTemplate(ptr %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.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 %then7837, label %endif7839 -then7837: + 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.5199, i64 1, i64 0 }, ptr %a93 + 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 @@ -70878,7 +70933,7 @@ then7837: %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: +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 @@ -70887,14 +70942,14 @@ endif7839: store i64 %t106, ptr %a107 %t108 = load i64, ptr %a107 %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then7840, label %endif7842 -then7840: + br i1 %t109, label %then7847, label %endif7849 +then7847: %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: +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 @@ -70903,30 +70958,30 @@ endif7842: store i64 %t118, ptr %a119 %t120 = load i64, ptr %a119 %t121 = icmp sge i64 %t120, 0 - br i1 %t121, label %then7843, label %endif7845 -then7843: + 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.cond7846 -for.cond7846: + br label %for.cond7853 +for.cond7853: %t127 = load i64, ptr %a126 %t128 = icmp slt i64 %t127, %t125 - br i1 %t128, label %for.body7847, label %for.end7849 -for.body7847: + 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 %range7850, label %inrange7851 -range7850: - call void @finch_panic_index(ptr @.str.5200, i64 4669, i64 %t131, i64 %t133) + br i1 %t134, label %range7857, label %inrange7858 +range7857: + call void @finch_panic_index(ptr @.str.5204, i64 4669, i64 %t131, i64 %t133) unreachable -inrange7851: +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 @@ -70940,13 +70995,13 @@ inrange7851: %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: + br label %for.step7855 +for.step7855: %t145 = load i64, ptr %a126 %t146 = add i64 %t145, 1 store i64 %t146, ptr %a126 - br label %for.cond7846 -for.end7849: + br label %for.cond7853 +for.end7856: %t147 = load ptr, ptr %a1 %t148 = load i64, ptr %a119 %t149 = load { ptr, i64, i64 }, ptr %a122 @@ -70955,16 +71010,16 @@ for.end7849: %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: +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.5201, i64 12, i64 0 }, ptr %a158 + 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.5202, i64 35, i64 0 }, ptr %a163 + 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 @@ -70974,30 +71029,30 @@ endif7845: 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 + 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 %endif7830 -endif7830: + 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.5204, i64 4, i64 0 }, ptr %t177 + 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.5205, i64 3, i64 0 }, ptr %t178 + 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.5206, i64 6, i64 0 }, ptr %t179 + 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.5207, i64 6, i64 0 }, ptr %t180 + 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.5208, i64 5, i64 0 }, ptr %t181 + 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.5209, i64 6, i64 0 }, ptr %t182 + 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.5210, i64 4, i64 0 }, ptr %t183 + 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.5211, i64 7, i64 0 }, ptr %t184 + 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 @@ -71011,27 +71066,27 @@ endif7830: %t195 = load i64, ptr %t191 %t196 = load ptr, ptr %a188 store i64 0, ptr %a197 - br label %find.cond7852 -find.cond7852: + br label %find.cond7859 +find.cond7859: %t198 = load i64, ptr %a197 %t199 = icmp slt i64 %t198, %t195 - br i1 %t199, label %find.body7853, label %find.end7856 -find.body7853: + 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.hit7854, label %find.next7855 -find.hit7854: + br i1 %t205, label %find.hit7861, label %find.next7862 +find.hit7861: store i64 %t198, ptr %a194 - br label %find.end7856 -find.next7855: + br label %find.end7863 +find.next7862: %t206 = add i64 %t198, 1 store i64 %t206, ptr %a197 - br label %find.cond7852 -find.end7856: + 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) @@ -71045,8 +71100,8 @@ find.end7856: 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: + 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 @@ -71054,21 +71109,21 @@ then7857: 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: + 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.5212, i64 5, i64 0 }, ptr %a229 + 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 %then7860, label %endif7862 -then7860: - store { ptr, i64, i64 } { ptr @.str.5213, i64 0, i64 0 }, ptr %a232 + 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 %then7863, label %else7864 -then7863: + 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 @@ -71076,8 +71131,8 @@ then7863: 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: + 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 @@ -71085,49 +71140,49 @@ else7864: %t245 = load i64, ptr %t241 %t246 = load ptr, ptr %a188 store i64 0, ptr %a247 - br label %find.cond7866 -find.cond7866: + br label %find.cond7873 +find.cond7873: %t248 = load i64, ptr %a247 %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body7867, label %find.end7870 -find.body7867: + 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.hit7868, label %find.next7869 -find.hit7868: + br i1 %t255, label %find.hit7875, label %find.next7876 +find.hit7875: store i64 %t248, ptr %a244 - br label %find.end7870 -find.next7869: + br label %find.end7877 +find.next7876: %t256 = add i64 %t248, 1 store i64 %t256, ptr %a247 - br label %find.cond7866 -find.end7870: + br label %find.cond7873 +find.end7877: %t257 = load i64, ptr %a244 %t258 = icmp sge i64 %t257, 0 - br i1 %t258, label %then7871, label %endif7873 -then7871: + 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.5214, i64 63, i64 0 }, ptr %a265 + 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 %endif7873 -endif7873: + 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 %endif7865 -endif7865: + br label %endif7872 +endif7872: %t271 = load ptr, ptr %a1 %t272 = load %S.ast.Node, ptr %a2 %t273 = call { ptr, i64, i64 } @finch.docs.arrayMethods() @@ -71138,15 +71193,15 @@ endif7865: %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: +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.5215, i64 3, i64 0 }, ptr %a282 + 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 %then7874, label %endif7876 -then7874: + 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 @@ -71155,13 +71210,13 @@ then7874: 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: + 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.5216, i64 17, i64 0 }, { ptr, i64, i64 } %t296) + %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 @@ -71169,8 +71224,8 @@ then7877: %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: + br label %endif7886 +endif7886: %t304 = load ptr, ptr %a1 %t305 = load %S.ast.Node, ptr %a2 %t306 = call { ptr, i64, i64 } @finch.docs.strMethods() @@ -71182,20 +71237,20 @@ endif7879: %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: +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.5217, i64 3, i64 0 }, ptr %a316 + 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 %then7880, label %endif7882 -then7880: - store { ptr, i64, i64 } { ptr @.str.5218, i64 0, i64 0 }, ptr %a319 + 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 %then7883, label %else7884 -then7883: + 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 @@ -71203,8 +71258,8 @@ then7883: 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: + 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 @@ -71212,49 +71267,49 @@ else7884: %t332 = load i64, ptr %t328 %t333 = load ptr, ptr %a188 store i64 0, ptr %a334 - br label %find.cond7886 -find.cond7886: + br label %find.cond7893 +find.cond7893: %t335 = load i64, ptr %a334 %t336 = icmp slt i64 %t335, %t332 - br i1 %t336, label %find.body7887, label %find.end7890 -find.body7887: + 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.hit7888, label %find.next7889 -find.hit7888: + br i1 %t342, label %find.hit7895, label %find.next7896 +find.hit7895: store i64 %t335, ptr %a331 - br label %find.end7890 -find.next7889: + br label %find.end7897 +find.next7896: %t343 = add i64 %t335, 1 store i64 %t343, ptr %a334 - br label %find.cond7886 -find.end7890: + br label %find.cond7893 +find.end7897: %t344 = load i64, ptr %a331 %t345 = icmp sge i64 %t344, 0 - br i1 %t345, label %then7891, label %endif7893 -then7891: + 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.5219, i64 61, i64 0 }, ptr %a352 + 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 %endif7893 -endif7893: + 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 %endif7885 -endif7885: + br label %endif7892 +endif7892: %t358 = load ptr, ptr %a1 %t359 = load %S.ast.Node, ptr %a2 %t360 = call { ptr, i64, i64 } @finch.docs.mapMethods() @@ -71265,60 +71320,60 @@ endif7885: %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: +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.5220, i64 0, i64 0 }, ptr %a371 + 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.5221, i64 3, i64 0 }, ptr %a375 + 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.from7894 -logic.from7894: - br i1 %t377, label %logic.rhs7895, label %logic.end7896 -logic.rhs7895: + 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.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: + 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 %range7901, label %inrange7902 -range7901: - call void @finch_panic_index(ptr @.str.5222, i64 4717, i64 0, i64 %t385) + br i1 %t386, label %range7908, label %inrange7909 +range7908: + call void @finch_panic_index(ptr @.str.5226, i64 4717, i64 0, i64 %t385) unreachable -inrange7902: +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.5223, i64 6, i64 0 }, ptr %a392 + 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.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: + 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 @@ -71328,36 +71383,36 @@ then7904: 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: + 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.5224, i64 3, i64 0 }, { ptr, i64, i64 } %t408) + %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 %endif7909 -endif7909: + 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.5225, i64 12, i64 0 }, ptr %a414 + 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.5226, i64 6, i64 0 }, ptr %a419 + 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.5227, i64 8, i64 0 }, ptr %a425 + 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.5228, i64 20, i64 0 }, ptr %a430 + 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 @@ -71366,11 +71421,11 @@ endif7909: %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) + br i1 %t436, label %range7917, label %inrange7918 +range7917: + call void @finch_panic_index(ptr @.str.5233, i64 4723, i64 0, i64 %t435) unreachable -inrange7911: +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 @@ -71383,35 +71438,35 @@ inrange7911: 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: + 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.5230, i64 6, i64 0 }, ptr %a450 + 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.from7912 -logic.from7912: - br i1 %t452, label %logic.end7914, label %logic.rhs7913 -logic.rhs7913: + 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.5231, i64 4, i64 0 }, ptr %a456 + 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.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: + 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 %then7919, label %else7920 -then7919: + 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 @@ -71419,42 +71474,42 @@ then7919: 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: + 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 %endif7921 -endif7921: - br label %endif7918 -endif7918: - br label %endif7906 -endif7906: + 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.5232, i64 6, i64 0 }, ptr %a475 + 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.from7922 -logic.from7922: - br i1 %t477, label %logic.end7924, label %logic.rhs7923 -logic.rhs7923: + 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.5233, i64 4, i64 0 }, ptr %a481 + 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.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: + 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 @@ -71466,23 +71521,23 @@ then7926: 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: + 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.5234, i64 6, i64 0 }, ptr %a499 + 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.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: + 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 @@ -71492,29 +71547,29 @@ then7933: 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) + br i1 %t511, label %panic7943, label %ok7944 +panic7943: + call void @finch_panic(ptr @.str.5239, i64 4736, ptr @.str.5240) unreachable -ok7937: +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 %range7938, label %inrange7939 -range7938: - call void @finch_panic_index(ptr @.str.5237, i64 4736, i64 %t513, i64 %t515) + br i1 %t516, label %range7945, label %inrange7946 +range7945: + call void @finch_panic_index(ptr @.str.5241, i64 4736, i64 %t513, i64 %t515) unreachable -inrange7939: +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 %then7940, label %endif7942 -then7940: + 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 @@ -71522,21 +71577,21 @@ then7940: %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) + br i1 %t529, label %panic7950, label %ok7951 +panic7950: + call void @finch_panic(ptr @.str.5242, i64 4737, ptr @.str.5243) unreachable -ok7944: +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 %range7945, label %inrange7946 -range7945: - call void @finch_panic_index(ptr @.str.5240, i64 4737, i64 %t531, i64 %t533) + br i1 %t534, label %range7952, label %inrange7953 +range7952: + call void @finch_panic_index(ptr @.str.5244, i64 4737, i64 %t531, i64 %t533) unreachable -inrange7946: +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 @@ -71545,27 +71600,27 @@ inrange7946: store i64 %t539, ptr %a540 %t541 = load i64, ptr %a540 %t542 = icmp sge i64 %t541, 0 - br i1 %t542, label %then7947, label %endif7949 -then7947: + 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 %panic7950, label %ok7951 -panic7950: - call void @finch_panic(ptr @.str.5241, i64 4739, ptr @.str.5242) + br i1 %t546, label %panic7957, label %ok7958 +panic7957: + call void @finch_panic(ptr @.str.5245, i64 4739, ptr @.str.5246) unreachable -ok7951: +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 %range7952, label %inrange7953 -range7952: - call void @finch_panic_index(ptr @.str.5243, i64 4739, i64 %t548, i64 %t550) + br i1 %t551, label %range7959, label %inrange7960 +range7959: + call void @finch_panic_index(ptr @.str.5247, i64 4739, i64 %t548, i64 %t550) unreachable -inrange7953: +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 @@ -71574,34 +71629,34 @@ inrange7953: %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: - br label %endif7935 -endif7935: %t559 = load i64, ptr %a493 %t560 = icmp slt i64 %t559, 0 - br i1 %t560, label %then7954, label %endif7956 -then7954: + 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 %panic7957, label %ok7958 -panic7957: - call void @finch_panic(ptr @.str.5244, i64 4745, ptr @.str.5245) + br i1 %t563, label %panic7964, label %ok7965 +panic7964: + call void @finch_panic(ptr @.str.5248, i64 4745, ptr @.str.5249) unreachable -ok7958: +ok7965: %t564 = getelementptr inbounds %S.gen.Gen, ptr %t562, i32 0, i32 14 store i64 0, ptr %a565 - br label %each.cond7959 -each.cond7959: + 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.body7960, label %each.end7962 -each.body7960: + 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 @@ -71614,10 +71669,10 @@ each.body7960: 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: + 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 @@ -71626,13 +71681,13 @@ logic.rhs7964: 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: + 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 @@ -71646,30 +71701,30 @@ then7967: %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: + 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.cond7959 -each.end7962: + 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 %then7970, label %endif7972 -then7970: + 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.5246, i64 4, i64 0 }, ptr %a611 + 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.5247, i64 1, i64 0 }, ptr %a616 + 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 @@ -71679,7 +71734,7 @@ then7970: 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 + 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 @@ -71689,7 +71744,7 @@ then7970: 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 + 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 @@ -71699,22 +71754,22 @@ then7970: 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 + 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 %endif7972 -endif7972: + 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.5251, i64 4, i64 0 }, ptr %a653 + 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.5252, i64 1, i64 0 }, ptr %a658 + 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 @@ -71724,7 +71779,7 @@ endif7972: 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 + 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 @@ -71734,11 +71789,11 @@ endif7972: 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 + 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.5255, i64 2, i64 0 }, ptr %a681 + 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 @@ -71746,76 +71801,76 @@ endif7972: 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 + 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 %endif7956 -endif7956: + br label %endif7963 +endif7963: %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) + br i1 %t693, label %panic7980, label %ok7981 +panic7980: + call void @finch_panic(ptr @.str.5261, i64 4756, ptr @.str.5262) unreachable -ok7974: +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 %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5259, i64 4756, i64 %t695, i64 %t697) + br i1 %t698, label %range7982, label %inrange7983 +range7982: + call void @finch_panic_index(ptr @.str.5263, i64 4756, i64 %t695, i64 %t697) unreachable -inrange7976: +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.from7977 -logic.from7977: - br i1 %t702, label %logic.rhs7978, label %logic.end7979 -logic.rhs7978: + 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.5260, i64 6, i64 0 }, ptr %a706 + 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.from7980 -logic.from7980: - br i1 %t708, label %logic.end7982, label %logic.rhs7981 -logic.rhs7981: + 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.5261, i64 4, i64 0 }, ptr %a712 + 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.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: + 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 %then7988, label %endif7990 -then7988: + 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.5262, i64 28, i64 0 }, ptr %a726 + 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 @@ -71825,66 +71880,66 @@ then7988: 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 + 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 %endif7990 -endif7990: + 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 %then7991, label %endif7993 -then7991: + 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.from7994 -logic.from7994: - br i1 %t749, label %logic.rhs7995, label %logic.end7996 -logic.rhs7995: + 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.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: + 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.5264, i64 19, i64 0 }, ptr %a759 + 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.5265, i64 18, i64 0 }, ptr %a764 + 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 %endif7993 -endif7993: - br label %endif7987 -endif7987: + 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.5266, i64 1, i64 0 }, ptr %a773 + 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 @@ -71898,13 +71953,13 @@ endif7987: %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: +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.5267, i64 15, i64 0 }, ptr %a791 + 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) @@ -72481,11 +72536,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 %range8008, label %inrange8009 +range8008: + call void @finch_panic_index(ptr @.str.5272, i64 4779, i64 0, i64 %t7) unreachable -inrange8002: +inrange8009: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 %t11 = load %S.ast.Type, ptr %t10 @@ -72505,23 +72560,23 @@ 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.5273, 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.5274, 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 + 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 %then8003, label %endif8005 -then8003: + 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) @@ -72532,11 +72587,11 @@ then8003: %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) + br i1 %t51, label %range8013, label %inrange8014 +range8013: + call void @finch_panic_index(ptr @.str.5276, i64 4785, i64 1, i64 %t50) unreachable -inrange8007: +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 @@ -72547,41 +72602,41 @@ inrange8007: %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) + br i1 %t61, label %range8015, label %inrange8016 +range8015: + call void @finch_panic_index(ptr @.str.5277, i64 4785, i64 1, i64 %t60) unreachable -inrange8009: +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.5274, i64 11, i64 0 }) + %t65 = call %S.gen.Val @finch.gen.coerce(ptr %t46, %S.gen.Val %t56, %S.ast.Type %t57, %S.ast.Node %t64, { ptr, i64, i64 } { ptr @.str.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.5275, i64 3, i64 0 }, { ptr, i64, i64 } %t69) + %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 %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 } { 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.5277, i64 3, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.5281, i64 3, i64 0 }, ptr %a80 call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) %t81 = load { ptr, i64, i64 }, ptr %a78 %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t81) store { ptr, i64, i64 } %t82, ptr %a83 %t84 = load ptr, ptr %a1 %t85 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5278, i64 33, i64 0 }, ptr %a87 + 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.5279, i64 6, i64 0 }, ptr %a92 + 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 @@ -72590,7 +72645,7 @@ inrange8009: 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 + 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 @@ -72601,25 +72656,25 @@ inrange8009: 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 + 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.5282, i64 3, i64 0 }, { ptr, i64, i64 } %t115) + %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.5283, i64 23, i64 0 }, ptr %a124 + 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.5284, i64 6, i64 0 }, ptr %a129 + 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 @@ -72628,7 +72683,7 @@ inrange8009: 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 } { ptr @.str.5289, i64 6, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = load { ptr, i64, i64 }, ptr %a71 @@ -72641,65 +72696,65 @@ inrange8009: %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 }) + 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 -endif8005: +endif8012: %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 + 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 %then8010, label %endif8012 -then8010: + 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.5289, i64 3, i64 0 }, { ptr, i64, i64 } %t159) + %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.5290, i64 12, i64 0 }, ptr %a166 + 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.5291, i64 3, i64 0 }, ptr %a171 + 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.5292, i64 23, i64 0 }, %S.ast.Node %t174) + 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) %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 } { 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.5294, i64 3, i64 0 }, ptr %a183 + 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.5295, i64 3, i64 0 }, { ptr, i64, i64 } %t188) + %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.5296, i64 23, i64 0 }, ptr %a196 + 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.5297, i64 6, i64 0 }, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a201 call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) %t202 = load { ptr, i64, i64 }, ptr %a199 %t203 = load { ptr, i64, i64 }, ptr %a190 @@ -72708,7 +72763,7 @@ then8010: call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5298, i64 6, i64 0 }, ptr %a210 + 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 @@ -72722,7 +72777,7 @@ then8010: %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) + 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) @@ -72738,45 +72793,45 @@ then8010: %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: +endif8019: %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 + 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 %then8013, label %endif8015 -then8013: + 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.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 }) + 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 -endif8015: +endif8022: %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 + 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.from8016 -logic.from8016: - br i1 %t252, label %logic.end8018, label %logic.rhs8017 -logic.rhs8017: + br label %logic.from8023 +logic.from8023: + br i1 %t252, label %logic.end8025, label %logic.rhs8024 +logic.rhs8024: %t253 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.5305, i64 8, i64 0 }, ptr %a255 + 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.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: + 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) @@ -72786,11 +72841,11 @@ then8020: %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) + br i1 %t266, label %range8030, label %inrange8031 +range8030: + call void @finch_panic_index(ptr @.str.5310, i64 4811, i64 1, i64 %t265) unreachable -inrange8024: +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 @@ -72801,50 +72856,50 @@ inrange8024: %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) + br i1 %t276, label %range8032, label %inrange8033 +range8032: + call void @finch_panic_index(ptr @.str.5311, i64 4811, i64 1, i64 %t275) unreachable -inrange8026: +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.5308, i64 21, i64 0 }) + %t280 = call %S.gen.Val @finch.gen.coerce(ptr %t261, %S.gen.Val %t271, %S.ast.Type %t272, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.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.5309, i64 3, i64 0 }) + %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.5310, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5311, i64 2, i64 0 }, { ptr, i64, i64 } %t286) + 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.5312, i64 3, i64 0 }, { ptr, i64, i64 } %t288) + %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.5313, i64 3, i64 0 }, { ptr, i64, i64 } %t292) + %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 %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 }) + %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.5315, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5316, i64 1, i64 0 }, { ptr, i64, i64 } %t299) + 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.5317, i64 9, i64 0 }) + %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.5318, i64 9, i64 0 }) + %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.5319, i64 8, i64 0 }) + %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.5320, i64 9, i64 0 }) + %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.5321, i64 8, i64 0 }) + %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 @@ -72854,16 +72909,16 @@ inrange8026: call void @finch.gen.label(ptr %t317, { ptr, i64, i64 } %t318) %t319 = load ptr, ptr %a1 %t320 = load { ptr, i64, i64 }, ptr %a297 - %t321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t319, { ptr, i64, i64 } { ptr @.str.5322, i64 3, i64 0 }, { ptr, i64, i64 } %t320) + %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.5323, i64 13, i64 0 }, ptr %a326 + 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.5324, i64 2, i64 0 }, ptr %a331 + 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 @@ -72885,12 +72940,12 @@ inrange8026: %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 } { 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.5326, i64 6, i64 0 }, ptr %a356 + 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 @@ -72899,7 +72954,7 @@ inrange8026: 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.5331, i64 6, i64 0 }, ptr %a365 call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) %t366 = load { ptr, i64, i64 }, ptr %a363 %t367 = load { ptr, i64, i64 }, ptr %a322 @@ -72920,7 +72975,7 @@ inrange8026: %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) + %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) @@ -72937,7 +72992,7 @@ inrange8026: %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) + 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) @@ -72947,17 +73002,17 @@ inrange8026: %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 + store { ptr, i64, i64 } { ptr @.str.5335, i64 8, i64 0 }, ptr %a408 store { ptr, i64, i64 } %t406, ptr %a409 call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) %t410 = load { ptr, i64, i64 }, ptr %a407 store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5332, i64 3, i64 0 }, ptr %a413 + 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.5330, i64 3, i64 0 }, { ptr, i64, i64 } %t415, { ptr, i64, i64 } %t416) + 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) @@ -72966,78 +73021,78 @@ inrange8026: 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) + %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.5334, i64 4, i64 0 }, ptr %a427 + 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 %then8027, label %endif8029 -then8027: + 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.5335, i64 3, i64 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 -endif8029: +endif8036: %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 } { 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.5337, i64 3, i64 0 }, ptr %a445 + 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.5338, i64 4, i64 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 -endif8022: +endif8029: %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 + 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 %then8030, label %endif8032 -then8030: + br i1 %t455, label %then8037, label %endif8039 +then8037: %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 + 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 %then8033, label %endif8035 -then8033: + 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.5341, i64 31, i64 0 }) - br label %endif8035 -endif8035: + 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 %range8036, label %inrange8037 -range8036: - call void @finch_panic_index(ptr @.str.5342, i64 4850, i64 1, i64 %t470) + br i1 %t471, label %range8043, label %inrange8044 +range8043: + call void @finch_panic_index(ptr @.str.5346, i64 4850, i64 1, i64 %t470) unreachable -inrange8037: +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.5343, i64 13, i64 0 }) + %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 %t478 = load ptr, ptr %a1 @@ -73045,12 +73100,12 @@ inrange8037: 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 } { 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.5345, i64 6, i64 0 }, ptr %a489 + 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 @@ -73059,7 +73114,7 @@ inrange8037: 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 + 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 @@ -73068,26 +73123,26 @@ inrange8037: 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 + 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.5348, i64 17, i64 0 }, { ptr, i64, i64 } %t510) + %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.5349, i64 3, i64 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 -endif8032: +endif8039: %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 + 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 %then8038, label %endif8040 -then8038: + 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) @@ -73097,29 +73152,29 @@ then8038: %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) + br i1 %t528, label %range8048, label %inrange8049 +range8048: + call void @finch_panic_index(ptr @.str.5355, i64 4857, i64 1, i64 %t527) unreachable -inrange8042: +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.5352, i64 3, i64 0 }) + %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 %range8043, label %inrange8044 -range8043: - call void @finch_panic_index(ptr @.str.5353, i64 4857, i64 1, i64 %t536) + br i1 %t537, label %range8050, label %inrange8051 +range8050: + call void @finch_panic_index(ptr @.str.5357, i64 4857, i64 1, i64 %t536) unreachable -inrange8044: +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.5354, i64 12, i64 0 }) + %t541 = call %S.gen.Val @finch.gen.coerce(ptr %t523, %S.gen.Val %t532, %S.ast.Type %t533, %S.ast.Node %t540, { ptr, i64, i64 } { ptr @.str.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) @@ -73132,11 +73187,11 @@ inrange8044: %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) + br i1 %t553, label %range8052, label %inrange8053 +range8052: + call void @finch_panic_index(ptr @.str.5359, i64 4858, i64 2, i64 %t552) unreachable -inrange8046: +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 @@ -73147,36 +73202,36 @@ inrange8046: %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) + br i1 %t563, label %range8054, label %inrange8055 +range8054: + call void @finch_panic_index(ptr @.str.5360, i64 4858, i64 2, i64 %t562) unreachable -inrange8048: +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.5357, i64 11, i64 0 }) + %t567 = call %S.gen.Val @finch.gen.coerce(ptr %t548, %S.gen.Val %t558, %S.ast.Type %t559, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.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 %panic8049, label %ok8050 -panic8049: - call void @finch_panic(ptr @.str.5358, i64 4859, ptr @.str.5359) + br i1 %t572, label %panic8056, label %ok8057 +panic8056: + call void @finch_panic(ptr @.str.5362, i64 4859, ptr @.str.5363) unreachable -ok8050: +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 %range8051, label %inrange8052 -range8051: - call void @finch_panic_index(ptr @.str.5360, i64 4859, i64 %t575, i64 %t577) + br i1 %t578, label %range8058, label %inrange8059 +range8058: + call void @finch_panic_index(ptr @.str.5364, i64 4859, i64 %t575, i64 %t577) unreachable -inrange8052: +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 @@ -73184,12 +73239,12 @@ inrange8052: 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 } { 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.5362, i64 6, i64 0 }, ptr %a592 + 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 @@ -73198,7 +73253,7 @@ inrange8052: 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 + 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 @@ -73209,7 +73264,7 @@ inrange8052: 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 + 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 @@ -73218,7 +73273,7 @@ inrange8052: 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 + 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 @@ -73230,25 +73285,25 @@ inrange8052: 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 + 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.5367, i64 3, i64 0 }, { ptr, i64, i64 } %t636) + %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.5368, i64 23, i64 0 }, ptr %a645 + 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.5369, i64 6, i64 0 }, ptr %a650 + 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 @@ -73257,7 +73312,7 @@ inrange8052: 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 + 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 @@ -73267,17 +73322,17 @@ inrange8052: %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 }) + %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 -endif8040: +endif8047: %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 + 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 %then8053, label %endif8055 -then8053: + 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) @@ -73287,29 +73342,29 @@ then8053: %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) + br i1 %t681, label %range8063, label %inrange8064 +range8063: + call void @finch_panic_index(ptr @.str.5377, i64 4867, i64 1, i64 %t680) unreachable -inrange8057: +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.5374, i64 3, i64 0 }) + %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 %range8058, label %inrange8059 -range8058: - call void @finch_panic_index(ptr @.str.5375, i64 4867, i64 1, i64 %t689) + br i1 %t690, label %range8065, label %inrange8066 +range8065: + call void @finch_panic_index(ptr @.str.5379, i64 4867, i64 1, i64 %t689) unreachable -inrange8059: +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.5376, i64 12, i64 0 }) + %t694 = call %S.gen.Val @finch.gen.coerce(ptr %t676, %S.gen.Val %t685, %S.ast.Type %t686, %S.ast.Node %t693, { ptr, i64, i64 } { ptr @.str.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) @@ -73319,23 +73374,23 @@ inrange8059: %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) + %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.5378, i64 3, i64 0 }, { ptr, i64, i64 } %t707) + %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.5379, i64 23, i64 0 }, ptr %a715 + 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.5380, i64 6, i64 0 }, ptr %a720 + 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 @@ -73344,7 +73399,7 @@ inrange8059: 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 + 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 @@ -73357,12 +73412,12 @@ inrange8059: 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 } { 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.5383, i64 6, i64 0 }, ptr %a747 + 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 @@ -73371,7 +73426,7 @@ inrange8059: 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 + 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 @@ -73382,7 +73437,7 @@ inrange8059: 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 + 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) @@ -73401,14 +73456,14 @@ inrange8059: %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: +endif8062: %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 + 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 %then8060, label %endif8062 -then8060: + 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) @@ -73418,29 +73473,29 @@ then8060: %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) + br i1 %t795, label %range8070, label %inrange8071 +range8070: + call void @finch_panic_index(ptr @.str.5391, i64 4876, i64 1, i64 %t794) unreachable -inrange8064: +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.5388, i64 3, i64 0 }) + %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 %range8065, label %inrange8066 -range8065: - call void @finch_panic_index(ptr @.str.5389, i64 4876, i64 1, i64 %t803) + br i1 %t804, label %range8072, label %inrange8073 +range8072: + call void @finch_panic_index(ptr @.str.5393, i64 4876, i64 1, i64 %t803) unreachable -inrange8066: +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.5390, i64 14, i64 0 }) + %t808 = call %S.gen.Val @finch.gen.coerce(ptr %t790, %S.gen.Val %t799, %S.ast.Type %t800, %S.ast.Node %t807, { ptr, i64, i64 } { ptr @.str.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) @@ -73448,12 +73503,12 @@ inrange8066: 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 } { 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.5392, i64 6, i64 0 }, ptr %a822 + 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 @@ -73462,7 +73517,7 @@ inrange8066: 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.5393, i64 6, i64 0 }, ptr %a831 + store { ptr, i64, i64 } { ptr @.str.5397, 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 @@ -73473,40 +73528,40 @@ inrange8066: 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.5394, i64 1, i64 0 }, ptr %a842 + 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.5395, i64 4, i64 0 }) + %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 -endif8062: +endif8069: %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 + 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 %then8067, label %endif8069 -then8067: + 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.5397, i64 3, i64 0 }, { ptr, i64, i64 } %t854) + %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.5398, i64 3, i64 0 }, { ptr, i64, i64 } %t858) + %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.5399, i64 9, i64 0 }, ptr %a864 + 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.5400, i64 3, i64 0 }, ptr %a869 + 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) @@ -73517,12 +73572,12 @@ then8067: 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 } { 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.5402, i64 6, i64 0 }, ptr %a885 + 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 @@ -73531,17 +73586,17 @@ then8067: 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 + 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 %range8070, label %inrange8071 -range8070: - call void @finch_panic_index(ptr @.str.5404, i64 4886, i64 3, i64 %t897) + br i1 %t898, label %range8077, label %inrange8078 +range8077: + call void @finch_panic_index(ptr @.str.5408, i64 4886, i64 3, i64 %t897) unreachable -inrange8071: +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 @@ -73554,31 +73609,31 @@ inrange8071: %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 } { 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.5407, i64 3, i64 0 }, ptr %a917 + 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.5405, i64 8, i64 0 }, ptr %a921 + 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.5408, i64 2, i64 0 }, ptr %a926 + 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 %range8072, label %inrange8073 -range8072: - call void @finch_panic_index(ptr @.str.5409, i64 4887, i64 3, i64 %t929) + br i1 %t930, label %range8079, label %inrange8080 +range8079: + call void @finch_panic_index(ptr @.str.5413, i64 4887, i64 3, i64 %t929) unreachable -inrange8073: +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 @@ -73590,12 +73645,12 @@ inrange8073: 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 } { 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.5411, i64 6, i64 0 }, ptr %a948 + store { ptr, i64, i64 } { ptr @.str.5415, i64 6, i64 0 }, ptr %a948 call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) %t949 = load { ptr, i64, i64 }, ptr %a946 %t950 = load { ptr, i64, i64 }, ptr %a860 @@ -73604,7 +73659,7 @@ inrange8073: 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 + 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 @@ -73637,17 +73692,17 @@ inrange8073: %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 }) + %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 -endif8069: +endif8076: %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 + 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 %then8074, label %endif8076 -then8074: + 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) @@ -73657,29 +73712,29 @@ then8074: %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) + br i1 %t1000, label %range8084, label %inrange8085 +range8084: + call void @finch_panic_index(ptr @.str.5419, i64 4898, i64 1, i64 %t999) unreachable -inrange8078: +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.5416, i64 3, i64 0 }) + %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 %range8079, label %inrange8080 -range8079: - call void @finch_panic_index(ptr @.str.5417, i64 4898, i64 1, i64 %t1008) + br i1 %t1009, label %range8086, label %inrange8087 +range8086: + call void @finch_panic_index(ptr @.str.5421, i64 4898, i64 1, i64 %t1008) unreachable -inrange8080: +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.5418, i64 9, i64 0 }) + %t1013 = call %S.gen.Val @finch.gen.coerce(ptr %t995, %S.gen.Val %t1004, %S.ast.Type %t1005, %S.ast.Node %t1012, { ptr, i64, i64 } { ptr @.str.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) @@ -73691,29 +73746,29 @@ inrange8080: %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) + br i1 %t1024, label %range8088, label %inrange8089 +range8088: + call void @finch_panic_index(ptr @.str.5423, i64 4899, i64 2, i64 %t1023) unreachable -inrange8082: +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.5420, i64 3, i64 0 }) + %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 %range8083, label %inrange8084 -range8083: - call void @finch_panic_index(ptr @.str.5421, i64 4899, i64 2, i64 %t1032) + br i1 %t1033, label %range8090, label %inrange8091 +range8090: + call void @finch_panic_index(ptr @.str.5425, i64 4899, i64 2, i64 %t1032) unreachable -inrange8084: +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.5422, i64 7, i64 0 }) + %t1037 = call %S.gen.Val @finch.gen.coerce(ptr %t1019, %S.gen.Val %t1028, %S.ast.Type %t1029, %S.ast.Node %t1036, { ptr, i64, i64 } { ptr @.str.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) @@ -73721,28 +73776,28 @@ inrange8084: store { ptr, i64, i64 } %t1041, ptr %a1042 %t1043 = load ptr, ptr %a1 %t1044 = load { ptr, i64, i64 }, ptr %a37 - %t1045 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1043, { ptr, i64, i64 } { ptr @.str.5423, i64 3, i64 0 }, { ptr, i64, i64 } %t1044) + %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.5424, i64 13, i64 0 }, ptr %a1050 + store { ptr, i64, i64 } { ptr @.str.5428, i64 13, i64 0 }, ptr %a1050 store { ptr, i64, i64 } %t1048, ptr %a1051 call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) %t1052 = load { ptr, i64, i64 }, ptr %a1049 store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5425, i64 3, i64 0 }, ptr %a1055 + 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.5426, i64 13, i64 0 }, ptr %a1062 + store { ptr, i64, i64 } { ptr @.str.5430, i64 13, i64 0 }, ptr %a1062 store { ptr, i64, i64 } %t1060, ptr %a1063 call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) %t1064 = load { ptr, i64, i64 }, ptr %a1061 store { ptr, i64, i64 } %t1064, ptr %a1066 - store { ptr, i64, i64 } { ptr @.str.5427, i64 2, i64 0 }, ptr %a1067 + 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 @@ -73754,12 +73809,12 @@ inrange8084: 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 } { 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.5429, i64 2, i64 0 }, ptr %a1084 + store { ptr, i64, i64 } { ptr @.str.5433, i64 2, i64 0 }, ptr %a1084 call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) %t1085 = load { ptr, i64, i64 }, ptr %a1082 %t1086 = load { ptr, i64, i64 }, ptr %a1042 @@ -73773,12 +73828,12 @@ inrange8084: %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 } { ptr @.str.5435, i64 6, i64 0 }, ptr %a1098 store { ptr, i64, i64 } %t1096, ptr %a1099 call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) %t1100 = load { ptr, i64, i64 }, ptr %a1097 store { ptr, i64, i64 } %t1100, ptr %a1102 - store { ptr, i64, i64 } { ptr @.str.5432, i64 2, i64 0 }, ptr %a1103 + 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 @@ -73787,12 +73842,12 @@ inrange8084: 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 } { 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.5433, i64 2, i64 0 }, ptr %a1117 + 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 @@ -73802,15 +73857,15 @@ inrange8084: %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) + 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.5435, i64 8, i64 0 }, ptr %a1129 + 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.5436, i64 2, i64 0 }, ptr %a1134 + 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 @@ -73821,16 +73876,16 @@ inrange8084: %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 }) + %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.5438, i64 30, i64 0 }, ptr %a1149 + 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.5439, i64 6, i64 0 }, ptr %a1154 + 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 @@ -73839,7 +73894,7 @@ inrange8084: 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 + 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 @@ -73850,17 +73905,17 @@ inrange8084: 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 + 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.5442, i64 3, i64 0 }, { ptr, i64, i64 } %t1177) + %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.5443, i64 3, i64 0 }, { ptr, i64, i64 } %t1181) + %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 @@ -73868,12 +73923,12 @@ inrange8084: 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 } { 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.5445, i64 6, i64 0 }, ptr %a1196 + 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 @@ -73882,17 +73937,17 @@ inrange8084: 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 + 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 %range8085, label %inrange8086 -range8085: - call void @finch_panic_index(ptr @.str.5447, i64 4911, i64 3, i64 %t1208) + br i1 %t1209, label %range8092, label %inrange8093 +range8092: + call void @finch_panic_index(ptr @.str.5451, i64 4911, i64 3, i64 %t1208) unreachable -inrange8086: +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 @@ -73904,12 +73959,12 @@ inrange8086: 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 } { 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.5449, i64 6, i64 0 }, ptr %a1227 + 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 @@ -73918,27 +73973,27 @@ inrange8086: 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 + store { ptr, i64, i64 } { ptr @.str.5454, i64 6, i64 0 }, ptr %a1236 call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) %t1237 = load { ptr, i64, i64 }, ptr %a1234 %t1238 = load ptr, ptr %a1 %t1239 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } { ptr @.str.5451, i64 8, i64 0 }, ptr %a1241 + 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.5452, i64 2, i64 0 }, ptr %a1246 + store { ptr, i64, i64 } { ptr @.str.5456, i64 2, i64 0 }, ptr %a1246 call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) %t1247 = load { ptr, i64, i64 }, ptr %a1244 %t1248 = load { ptr, i64, i64 }, ptr %a1187 %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 %t1250 = icmp uge i64 3, %t1249 - br i1 %t1250, label %range8087, label %inrange8088 -range8087: - call void @finch_panic_index(ptr @.str.5453, i64 4912, i64 3, i64 %t1249) + br i1 %t1250, label %range8094, label %inrange8095 +range8094: + call void @finch_panic_index(ptr @.str.5457, i64 4912, i64 3, i64 %t1249) unreachable -inrange8088: +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 @@ -73963,7 +74018,7 @@ inrange8088: 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) + %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 @@ -73972,14 +74027,14 @@ inrange8088: %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: +endif8083: %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 + 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 %then8089, label %endif8091 -then8089: + 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) @@ -73992,61 +74047,61 @@ then8089: %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: + 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.5456, i64 4, i64 0 }, ptr %a1299 + 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.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: + 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.5457, i64 3, i64 0 }, ptr %a1305 + 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.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: + 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.5458, i64 47, i64 0 }) - br label %endif8102 -endif8102: + 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.5459, i64 3, i64 0 }, { ptr, i64, i64 } %t1316) + %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.5460, i64 3, i64 0 }, { ptr, i64, i64 } %t1320) + %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.5461, i64 21, i64 0 }, ptr %a1326 + 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.5462, i64 6, i64 0 }, ptr %a1331 + 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 @@ -74055,7 +74110,7 @@ endif8102: 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 + 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 @@ -74066,7 +74121,7 @@ endif8102: 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 + 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 @@ -74075,23 +74130,23 @@ endif8102: 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 + 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.5466, i64 4, i64 0 }) + %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 -endif8091: +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.5467, i64 24, i64 0 }, ptr %a1368 + store { ptr, i64, i64 } { ptr @.str.5471, i64 24, i64 0 }, ptr %a1368 store { ptr, i64, i64 } %t1366, ptr %a1369 call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) %t1370 = load { ptr, i64, i64 }, ptr %a1367 store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5468, i64 96, i64 0 }, ptr %a1373 + store { ptr, i64, i64 } { ptr @.str.5472, i64 96, i64 0 }, ptr %a1373 call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) %t1374 = load { ptr, i64, i64 }, ptr %a1371 call void @finch.gen.fail(ptr %t1364, %S.ast.Node %t1365, { ptr, i64, i64 } %t1374) @@ -74234,37 +74289,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5469, i64 11, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5473, 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) + br i1 %t11, label %panic8110, label %ok8111 +panic8110: + call void @finch_panic(ptr @.str.5474, i64 4936, ptr @.str.5475) unreachable -ok8104: +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 %then8105, label %endif8107 -then8105: + 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 -endif8107: +endif8114: %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) + br i1 %t21, label %panic8115, label %ok8116 +panic8115: + call void @finch_panic(ptr @.str.5476, i64 4939, ptr @.str.5477) unreachable -ok8109: +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 @@ -74281,58 +74336,58 @@ ok8109: %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 + 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.5475, i64 3, i64 0 }, ptr %a39 + 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 %then8110, label %else8111 -then8110: + 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.5476, i64 39, i64 0 }) + %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.5477, i64 10, i64 0 }, ptr %a48 + 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.5478, i64 7, i64 0 }, ptr %a53 + 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 %endif8112 -else8111: + 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.5479, i64 2, i64 0 }) + %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.5480, i64 2, i64 0 }) + %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.5481, i64 0, i64 0 }, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5482, i64 0, i64 0 }, ptr %a69 + 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 %then8113, label %else8114 -then8113: + 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.5483, i64 9, i64 0 }, ptr %a75 + 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.5484, i64 1, i64 0 }, ptr %a80 + 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 @@ -74341,7 +74396,7 @@ then8113: 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 + 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 @@ -74353,12 +74408,12 @@ then8113: 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 } { 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.5487, i64 1, i64 0 }, ptr %a105 + 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 @@ -74367,7 +74422,7 @@ then8113: 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.5492, i64 2, i64 0 }, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 %t116 = load { ptr, i64, i64 }, ptr %a67 @@ -74377,18 +74432,18 @@ then8113: %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: + 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.5490, i64 1, i64 0 }, i1 %t124) - store { ptr, i64, i64 } { ptr @.str.5489, i64 5, i64 0 }, ptr %a127 + %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.5491, i64 1, i64 0 }, ptr %a132 + 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 @@ -74397,7 +74452,7 @@ else8114: 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 + 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 @@ -74406,7 +74461,7 @@ else8114: 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 + 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 @@ -74419,13 +74474,13 @@ else8114: %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 + %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.5496, i64 1, i64 0 }, ptr %a168 + 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 @@ -74434,7 +74489,7 @@ else8114: 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 } { ptr @.str.5501, i64 1, i64 0 }, ptr %a177 call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) %t178 = load { ptr, i64, i64 }, ptr %a175 %t179 = load { ptr, i64, i64 }, ptr %a63 @@ -74443,7 +74498,7 @@ else8114: 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 + 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 @@ -74453,36 +74508,36 @@ else8114: %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: + 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.5500, i64 8, i64 0 }, ptr %a198 + 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.5501, i64 7, i64 0 }, ptr %a203 + 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.5499, i64 8, i64 0 }, ptr %a207 + 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.5502, i64 2, i64 0 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.5506, i64 2, i64 0 }, ptr %a212 call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) %t213 = load { ptr, i64, i64 }, ptr %a210 %t214 = load ptr, ptr %a1 %t215 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5503, i64 8, i64 0 }, ptr %a217 + 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.5504, i64 7, i64 0 }, ptr %a222 + 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) @@ -74492,11 +74547,11 @@ endif8115: %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: + br label %endif8119 +endif8119: %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 } { 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 @@ -74504,12 +74559,12 @@ endif8112: %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 } { 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.5507, i64 16, i64 0 }, ptr %a245 + 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) @@ -74780,22 +74835,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 %panic8123, label %ok8124 +panic8123: + call void @finch_panic(ptr @.str.5512, i64 4968, ptr @.str.5513) unreachable -ok8117: +ok8124: %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 %range8125, label %inrange8126 +range8125: + call void @finch_panic_index(ptr @.str.5514, i64 4968, i64 %t18, i64 %t20) unreachable -inrange8119: +inrange8126: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -74803,11 +74858,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.5515, 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 %then8127, label %endif8129 +then8127: %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) @@ -74817,29 +74872,29 @@ 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 %range8130, label %inrange8131 +range8130: + call void @finch_panic_index(ptr @.str.5516, i64 4971, i64 1, i64 %t38) unreachable -inrange8124: +inrange8131: %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.5517, 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 %range8132, label %inrange8133 +range8132: + call void @finch_panic_index(ptr @.str.5518, i64 4971, i64 1, i64 %t47) unreachable -inrange8126: +inrange8133: %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 }) + %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) @@ -74851,29 +74906,29 @@ inrange8126: %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) + br i1 %t63, label %range8134, label %inrange8135 +range8134: + call void @finch_panic_index(ptr @.str.5520, i64 4972, i64 2, i64 %t62) unreachable -inrange8128: +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.5517, i64 3, i64 0 }) + %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 %range8129, label %inrange8130 -range8129: - call void @finch_panic_index(ptr @.str.5518, i64 4972, i64 2, i64 %t71) + br i1 %t72, label %range8136, label %inrange8137 +range8136: + call void @finch_panic_index(ptr @.str.5522, i64 4972, i64 2, i64 %t71) unreachable -inrange8130: +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.5519, i64 7, i64 0 }) + %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t67, %S.ast.Type %t68, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.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) @@ -74881,12 +74936,12 @@ inrange8130: 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 } { 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.5521, i64 6, i64 0 }, ptr %a90 + 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 @@ -74895,7 +74950,7 @@ inrange8130: 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 + 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 @@ -74904,7 +74959,7 @@ inrange8130: 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 + 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 @@ -74913,7 +74968,7 @@ inrange8130: 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 + 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 @@ -74922,7 +74977,7 @@ inrange8130: 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 + 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 @@ -74934,68 +74989,68 @@ inrange8130: 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 + 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.5527, i64 17, i64 0 }, { ptr, i64, i64 } %t141) + %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.5528, i64 3, i64 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 -endif8122: +endif8129: %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 + 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.from8131 -logic.from8131: - br i1 %t151, label %logic.end8133, label %logic.rhs8132 -logic.rhs8132: + 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.5530, i64 8, i64 0 }, ptr %a154 + 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.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: + 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.5531, i64 11, i64 0 }, ptr %a160 + 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.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: + 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.5532, i64 9, i64 0 }, ptr %a166 + 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.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: + 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) @@ -75005,32 +75060,32 @@ then8143: %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) + br i1 %t177, label %range8153, label %inrange8154 +range8153: + call void @finch_panic_index(ptr @.str.5537, i64 4978, i64 1, i64 %t176) unreachable -inrange8147: +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.5534, i64 20, i64 0 }) + %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.5535, i64 4, i64 0 }, ptr %a186 + 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 %then8148, label %endif8150 -then8148: + br i1 %t188, label %then8155, label %endif8157 +then8155: %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 } { 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.5537, i64 6, i64 0 }, ptr %a197 + 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 @@ -75039,30 +75094,30 @@ then8148: 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 + 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.5539, i64 3, i64 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 -endif8150: +endif8157: %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 + 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 %then8151, label %endif8153 -then8151: + 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.5541, i64 29, i64 0 }, ptr %a220 + 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.5542, i64 6, i64 0 }, ptr %a225 + 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 @@ -75071,46 +75126,46 @@ then8151: call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.5543, i64 1, i64 0 }, ptr %a234 + 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.5544, i64 13, i64 0 }, ptr %a241 + 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.5545, i64 3, i64 0 }, ptr %a246 + 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.5546, i64 4, i64 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 -endif8153: - store { ptr, i64, i64 } { ptr @.str.5547, i64 17, i64 0 }, ptr %a252 +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.5548, i64 9, i64 0 }, ptr %a255 + 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 %then8154, label %endif8156 -then8154: - store { ptr, i64, i64 } { ptr @.str.5549, i64 15, i64 0 }, ptr %a252 - br label %endif8156 -endif8156: + 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.5550, i64 9, i64 0 }, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.5554, i64 9, i64 0 }, ptr %a261 store { ptr, i64, i64 } %t259, ptr %a262 call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) %t263 = load { ptr, i64, i64 }, ptr %a260 store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.5551, i64 5, i64 0 }, ptr %a266 + 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 @@ -75119,7 +75174,7 @@ endif8156: 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 + 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 @@ -75128,73 +75183,73 @@ endif8156: 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 + 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 %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 } { 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.5555, i64 3, i64 0 }, ptr %a296 + 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.5556, i64 4, i64 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 -endif8145: +endif8152: %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 + 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.from8157 -logic.from8157: - br i1 %t306, label %logic.end8159, label %logic.rhs8158 -logic.rhs8158: + 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.5558, i64 5, i64 0 }, ptr %a309 + 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.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: + 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.5559, i64 5, i64 0 }, ptr %a315 + 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.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: + 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.5560, i64 21, i64 0 }, ptr %a324 + 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.5561, i64 5, i64 0 }, ptr %a329 + 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 @@ -75203,7 +75258,7 @@ then8165: 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 + 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 @@ -75212,26 +75267,26 @@ then8165: 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 + 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.5564, i64 17, i64 0 }, { ptr, i64, i64 } %t350) + %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.5565, i64 3, i64 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 -endif8167: +endif8174: %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 + 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 %then8168, label %endif8170 -then8168: + 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) @@ -75241,15 +75296,15 @@ then8168: %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) + br i1 %t368, label %range8178, label %inrange8179 +range8178: + call void @finch_panic_index(ptr @.str.5571, i64 5000, i64 1, i64 %t367) unreachable -inrange8172: +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.5568, i64 19, i64 0 }) + %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 @@ -75258,25 +75313,25 @@ inrange8172: %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) + br i1 %t380, label %range8180, label %inrange8181 +range8180: + call void @finch_panic_index(ptr @.str.5573, i64 5001, i64 2, i64 %t379) unreachable -inrange8174: +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.5570, i64 12, i64 0 }) + %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.5571, i64 33, i64 0 }, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5575, i64 33, i64 0 }, ptr %a390 store { ptr, i64, i64 } %t388, ptr %a391 call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) %t392 = load { ptr, i64, i64 }, ptr %a389 store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.5572, i64 6, i64 0 }, ptr %a395 + 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 @@ -75285,7 +75340,7 @@ inrange8174: 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 + 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 @@ -75294,7 +75349,7 @@ inrange8174: 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.5574, i64 6, i64 0 }, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.5578, i64 6, i64 0 }, ptr %a413 call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) %t414 = load { ptr, i64, i64 }, ptr %a411 %t415 = load { ptr, i64, i64 }, ptr %a386 @@ -75303,26 +75358,26 @@ inrange8174: 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 + 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.5576, i64 17, i64 0 }, { ptr, i64, i64 } %t425) + %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.5577, i64 3, i64 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 -endif8170: +endif8177: %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 + 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 %then8175, label %endif8177 -then8175: + 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) @@ -75332,15 +75387,15 @@ then8175: %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) + br i1 %t443, label %range8185, label %inrange8186 +range8185: + call void @finch_panic_index(ptr @.str.5583, i64 5007, i64 1, i64 %t442) unreachable -inrange8179: +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.5580, i64 13, i64 0 }) + %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 @@ -75348,12 +75403,12 @@ inrange8179: 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 } { 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.5582, i64 6, i64 0 }, ptr %a461 + 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 @@ -75362,7 +75417,7 @@ inrange8179: 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 + 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 @@ -75371,27 +75426,27 @@ inrange8179: 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 + 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.5585, i64 17, i64 0 }, { ptr, i64, i64 } %t482) + %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.5586, i64 3, i64 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 -endif8177: +endif8184: %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 + 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 %then8180, label %endif8182 -then8180: + 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) @@ -75401,29 +75456,29 @@ then8180: %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) + br i1 %t501, label %range8190, label %inrange8191 +range8190: + call void @finch_panic_index(ptr @.str.5592, i64 5014, i64 1, i64 %t500) unreachable -inrange8184: +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.5589, i64 3, i64 0 }) + %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 %range8185, label %inrange8186 -range8185: - call void @finch_panic_index(ptr @.str.5590, i64 5014, i64 1, i64 %t509) + br i1 %t510, label %range8192, label %inrange8193 +range8192: + call void @finch_panic_index(ptr @.str.5594, i64 5014, i64 1, i64 %t509) unreachable -inrange8186: +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.5591, i64 9, i64 0 }) + %t514 = call %S.gen.Val @finch.gen.coerce(ptr %t496, %S.gen.Val %t505, %S.ast.Type %t506, %S.ast.Node %t513, { ptr, i64, i64 } { ptr @.str.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) @@ -75431,12 +75486,12 @@ inrange8186: 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 } { 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.5593, i64 6, i64 0 }, ptr %a528 + 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 @@ -75445,7 +75500,7 @@ inrange8186: 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 + 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 @@ -75454,26 +75509,26 @@ inrange8186: 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 + 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.5596, i64 17, i64 0 }, { ptr, i64, i64 } %t549) + %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.5597, i64 3, i64 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 -endif8182: +endif8189: %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 + 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 %then8187, label %endif8189 -then8187: + 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) @@ -75482,12 +75537,12 @@ then8187: 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 } { 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.5600, i64 6, i64 0 }, ptr %a573 + 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 @@ -75496,29 +75551,29 @@ then8187: 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 + 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.5602, i64 17, i64 0 }, { ptr, i64, i64 } %t585) + %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.5603, i64 2, i64 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 -endif8189: +endif8196: %t592 = load ptr, ptr %a1 %t593 = load %S.ast.Node, ptr %a2 %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5604, i64 21, i64 0 }, ptr %a596 + 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.5605, i64 106, i64 0 }, ptr %a601 + 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) @@ -75536,157 +75591,157 @@ entry: %t1 = mul i64 71, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t2 = call ptr @finch_alloc(i64 %t1) %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.5606, i64 54, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.5610, 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.5611, 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.5612, 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.5613, 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.5614, i64 32, 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.5615, i64 45, 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.5616, i64 35, 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.5617, i64 36, 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.5618, i64 42, 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.5619, i64 37, 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.5620, i64 38, 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.5621, 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.5622, i64 38, 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.5623, i64 37, 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.5624, 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.5625, i64 42, 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.5626, i64 34, 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.5627, 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.5628, i64 43, 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.5629, i64 47, 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.5630, i64 50, 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.5631, 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.5632, i64 44, 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.5633, i64 49, 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.5634, i64 57, 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.5635, i64 37, 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.5636, i64 39, 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.5637, i64 37, 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.5638, i64 38, 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.5639, 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.5640, i64 39, 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.5641, i64 51, 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.5642, i64 44, 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.5643, i64 43, 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.5644, i64 45, 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.5645, 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.5646, i64 52, 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.5647, i64 57, 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.5648, i64 48, 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.5649, i64 34, 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.5650, i64 48, 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.5651, i64 60, 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.5652, i64 55, 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.5653, i64 46, 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.5654, i64 48, 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.5655, i64 43, 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.5656, i64 45, 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.5657, i64 59, 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.5658, i64 49, 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.5659, i64 39, 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.5660, i64 39, 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.5661, i64 35, 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.5662, i64 35, 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.5663, i64 45, 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.5664, i64 47, 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.5665, i64 47, 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.5666, i64 48, 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.5667, i64 44, 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.5668, i64 37, 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.5669, i64 49, 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.5670, i64 39, 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.5671, i64 29, 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.5672, i64 35, 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.5673, i64 29, 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.5674, i64 24, 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.5675, i64 40, 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.5676, i64 33, 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.5677, i64 34, 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.5678, i64 44, 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.5679, i64 32, 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 + 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.5677, i64 1, i64 0 }, ptr %a79 + 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.5678, i64 1, i64 0 }, ptr %a84 + 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 @@ -75736,31 +75791,31 @@ entry: %a88 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5679, i64 52, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5683, 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 %panic8197, label %ok8198 +panic8197: + call void @finch_panic(ptr @.str.5684, i64 5109, ptr @.str.5685) unreachable -ok8191: +ok8198: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 %t7 = load i1, ptr %t6 - br i1 %t7, label %then8192, label %endif8194 -then8192: + br i1 %t7, label %then8199, label %endif8201 +then8199: %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.5686, 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 %panic8202, label %ok8203 +panic8202: + call void @finch_panic(ptr @.str.5687, i64 5110, ptr @.str.5688) unreachable -ok8196: +ok8203: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 29 %t16 = getelementptr inbounds %S.platform.Target, ptr %t15, i32 0, i32 0 %t17 = load { ptr, i64, i64 }, ptr %t16 @@ -75769,23 +75824,23 @@ ok8196: 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 + 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 %endif8194 -endif8194: + 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 %panic8197, label %ok8198 -panic8197: - call void @finch_panic(ptr @.str.5686, i64 5112, ptr @.str.5687) + br i1 %t28, label %panic8204, label %ok8205 +panic8204: + call void @finch_panic(ptr @.str.5690, i64 5112, ptr @.str.5691) unreachable -ok8198: +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.5688, i64 1, i64 0 }, ptr %a31 + 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 @@ -75793,7 +75848,7 @@ ok8198: 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 + store { ptr, i64, i64 } { ptr @.str.5693, i64 2, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() @@ -75802,40 +75857,40 @@ ok8198: 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 + 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 %panic8199, label %ok8200 -panic8199: - call void @finch_panic(ptr @.str.5691, i64 5113, ptr @.str.5692) + br i1 %t52, label %panic8206, label %ok8207 +panic8206: + call void @finch_panic(ptr @.str.5695, i64 5113, ptr @.str.5696) unreachable -ok8200: +ok8207: %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: + 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.5693, i64 62, i64 0 }, ptr %a58 + 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 %endif8203 -endif8203: + br label %endif8210 +endif8210: %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) + br i1 %t62, label %panic8211, label %ok8212 +panic8211: + call void @finch_panic(ptr @.str.5698, i64 5116, ptr @.str.5699) unreachable -ok8205: +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.5696, i64 1, i64 0 }, ptr %a65 + 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 @@ -75845,18 +75900,18 @@ ok8205: 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) + br i1 %t73, label %panic8213, label %ok8214 +panic8213: + call void @finch_panic(ptr @.str.5701, i64 5117, ptr @.str.5702) unreachable -ok8207: +ok8214: %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: + 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.5699, i64 1, i64 0 }, ptr %a79 + 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 @@ -75866,8 +75921,8 @@ then8208: 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: + 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) @@ -75884,20 +75939,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.cond8218 +n.cond8218: %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.body8219, label %n.end8220 +n.body8219: %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.cond8218 +n.end8220: ret void } @@ -75931,12 +75986,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.cond8221 +n.cond8221: %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.body8222, label %n.end8223 +n.body8222: %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 @@ -75946,21 +76001,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.live8224, label %entry.next8225 +entry.live8224: %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.next8225 +entry.next8225: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8214 -n.end8216: + br label %n.cond8221 +n.end8223: ret void } @@ -75971,12 +76026,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.cond8226 +n.cond8226: %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.body8227, label %n.end8228 +n.body8227: %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 @@ -75986,21 +76041,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.live8229, label %entry.next8230 +entry.live8229: %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.next8230 +entry.next8230: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8219 -n.end8221: + br label %n.cond8226 +n.end8228: ret void } @@ -76011,12 +76066,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.cond8231 +n.cond8231: %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.body8232, label %n.end8233 +n.body8232: %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 @@ -76026,21 +76081,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.live8234, label %entry.next8235 +entry.live8234: %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.next8235 +entry.next8235: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8224 -n.end8226: + br label %n.cond8231 +n.end8233: ret void } @@ -76051,12 +76106,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.cond8236 +n.cond8236: %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.body8237, label %n.end8238 +n.body8237: %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 @@ -76066,21 +76121,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.live8239, label %entry.next8240 +entry.live8239: %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.next8240 +entry.next8240: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond8229 -n.end8231: + br label %n.cond8236 +n.end8238: ret void } @@ -76303,22 +76358,22 @@ entry: 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 %panic8241, label %ok8242 +panic8241: + call void @finch_panic(ptr @.str.5704, i64 5127, ptr @.str.5705) unreachable -ok8235: +ok8242: %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 28 %t50 = load i1, ptr %t49 - br i1 %t50, label %then8236, label %endif8238 -then8236: + br i1 %t50, label %then8243, label %endif8245 +then8243: %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 %panic8246, label %ok8247 +panic8246: + call void @finch_panic(ptr @.str.5706, i64 5129, ptr @.str.5707) unreachable -ok8240: +ok8247: %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 31 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 %t55 = load i64, ptr %t54 @@ -76326,15 +76381,15 @@ ok8240: 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.5708, 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 %panic8248, label %ok8249 +panic8248: + call void @finch_panic(ptr @.str.5709, i64 5130, ptr @.str.5710) unreachable -ok8242: +ok8249: %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 31 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1 %t63 = load i64, ptr %t62 @@ -76342,15 +76397,15 @@ ok8242: 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.5711, 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 %panic8250, label %ok8251 +panic8250: + call void @finch_panic(ptr @.str.5712, i64 5131, ptr @.str.5713) unreachable -ok8244: +ok8251: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 31 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 %t71 = load i64, ptr %t70 @@ -76358,47 +76413,47 @@ ok8244: 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.5714, 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.cond8252 +each.cond8252: %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.body8253, label %each.end8255 +each.body8253: %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 %panic8256, label %ok8257 +panic8256: + call void @finch_panic(ptr @.str.5715, i64 5133, ptr @.str.5716) unreachable -ok8250: +ok8257: %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 33 %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 %t88 = load ptr, ptr %a46 %t89 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5713, i64 19, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.5717, 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.5718, 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) + br i1 %t99, label %panic8258, label %ok8259 +panic8258: + call void @finch_panic(ptr @.str.5719, i64 5133, ptr @.str.5720) unreachable -ok8252: +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 @@ -76406,7 +76461,7 @@ ok8252: 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 + 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) @@ -76417,101 +76472,101 @@ ok8252: %t114 = getelementptr inbounds i64, ptr %t113, i64 %t111 store i64 %t110, ptr %t114 store i64 %t112, ptr %t87 - br label %each.step8247 -each.step8247: + br label %each.step8254 +each.step8254: %t115 = load i64, ptr %a75 %t116 = add i64 %t115, 1 store i64 %t116, ptr %a75 - br label %each.cond8245 -each.end8248: + br label %each.cond8252 +each.end8255: %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) + br i1 %t118, label %panic8260, label %ok8261 +panic8260: + call void @finch_panic(ptr @.str.5723, i64 5135, ptr @.str.5724) unreachable -ok8254: +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 %range8255, label %inrange8256 -range8255: - call void @finch_panic_index(ptr @.str.5721, i64 5135, i64 0, i64 %t121) + br i1 %t122, label %range8262, label %inrange8263 +range8262: + call void @finch_panic_index(ptr @.str.5725, i64 5135, i64 0, i64 %t121) unreachable -inrange8256: +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.5718, i64 52, i64 0 }, ptr %a129 + 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.5722, i64 84, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.5726, i64 84, i64 0 }, ptr %a134 call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 %t136 = load ptr, ptr %a46 %t137 = icmp eq ptr %t136, null - br i1 %t137, label %panic8257, label %ok8258 -panic8257: - call void @finch_panic(ptr @.str.5723, i64 5135, ptr @.str.5724) + br i1 %t137, label %panic8264, label %ok8265 +panic8264: + call void @finch_panic(ptr @.str.5727, i64 5135, ptr @.str.5728) unreachable -ok8258: +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 %range8259, label %inrange8260 -range8259: - call void @finch_panic_index(ptr @.str.5725, i64 5135, i64 0, i64 %t140) + br i1 %t141, label %range8266, label %inrange8267 +range8266: + call void @finch_panic_index(ptr @.str.5729, i64 5135, i64 0, i64 %t140) unreachable -inrange8260: +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 %endif8238 -endif8238: + 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.5726, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5727, i64 4, i64 0 }) + %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 %then8261, label %else8262 -then8261: + br i1 %t148, label %then8268, label %else8269 +then8268: %t149 = load i64, ptr %a147 %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %then8264, label %endif8266 -then8264: + br i1 %t150, label %then8271, label %endif8273 +then8271: %t151 = load ptr, ptr %a46 %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) + br i1 %t153, label %panic8274, label %ok8275 +panic8274: + call void @finch_panic(ptr @.str.5732, i64 5141, ptr @.str.5733) unreachable -ok8268: +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 %panic8269, label %ok8270 -panic8269: - call void @finch_panic(ptr @.str.5730, i64 5141, ptr @.str.5731) + br i1 %t156, label %panic8276, label %ok8277 +panic8276: + call void @finch_panic(ptr @.str.5734, i64 5141, ptr @.str.5735) unreachable -ok8270: +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 %range8271, label %inrange8272 -range8271: - call void @finch_panic_index(ptr @.str.5732, i64 5141, i64 %t158, i64 %t160) + br i1 %t161, label %range8278, label %inrange8279 +range8278: + call void @finch_panic_index(ptr @.str.5736, i64 5141, i64 %t158, i64 %t160) unreachable -inrange8272: +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 @@ -76519,31 +76574,31 @@ inrange8272: %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) + br i1 %t168, label %range8280, label %inrange8281 +range8280: + call void @finch_panic_index(ptr @.str.5737, i64 5141, i64 %t165, i64 %t167) unreachable -inrange8274: +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 %panic8275, label %ok8276 -panic8275: - call void @finch_panic(ptr @.str.5734, i64 5141, ptr @.str.5735) + br i1 %t173, label %panic8282, label %ok8283 +panic8282: + call void @finch_panic(ptr @.str.5738, i64 5141, ptr @.str.5739) unreachable -ok8276: +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 %range8277, label %inrange8278 -range8277: - call void @finch_panic_index(ptr @.str.5736, i64 5141, i64 %t175, i64 %t177) + br i1 %t178, label %range8284, label %inrange8285 +range8284: + call void @finch_panic_index(ptr @.str.5740, i64 5141, i64 %t175, i64 %t177) unreachable -inrange8278: +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 @@ -76551,104 +76606,104 @@ inrange8278: %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) + br i1 %t185, label %range8286, label %inrange8287 +range8286: + call void @finch_panic_index(ptr @.str.5741, i64 5141, i64 %t182, i64 %t184) unreachable -inrange8280: +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.5738, i64 82, i64 0 }) - br label %endif8266 -endif8266: - br label %endif8263 -else8262: + 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 %then8281, label %endif8283 -then8281: + br i1 %t190, label %then8288, label %endif8290 +then8288: %t191 = load { ptr, i64, i64 }, ptr %a2 %t192 = extractvalue { ptr, i64, i64 } %t191, 1 %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range8284, label %inrange8285 -range8284: - call void @finch_panic_index(ptr @.str.5739, i64 5144, i64 0, i64 %t192) + br i1 %t193, label %range8291, label %inrange8292 +range8291: + call void @finch_panic_index(ptr @.str.5743, i64 5144, i64 0, i64 %t192) unreachable -inrange8285: +inrange8292: %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 + 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.5741, ptr %t203 - %t206 = call i32 (ptr, ...) @printf(ptr @.str.5742, i32 %t202, ptr %t205) - %t207 = call i32 (ptr, ...) @printf(ptr @.str.5743) + %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 %endif8283 -endif8283: - br label %endif8263 -endif8263: + br label %endif8290 +endif8290: + br label %endif8270 +endif8270: store i64 0, ptr %a210 - br label %while.cond8286 -while.cond8286: + 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 %panic8289, label %ok8290 -panic8289: - call void @finch_panic(ptr @.str.5744, i64 5149, ptr @.str.5745) + br i1 %t213, label %panic8296, label %ok8297 +panic8296: + call void @finch_panic(ptr @.str.5748, i64 5149, ptr @.str.5749) unreachable -ok8290: +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.body8287, label %while.end8288 -while.body8287: + 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.cond8286 -while.end8288: + br label %while.cond8293 +while.end8295: %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) + br i1 %t223, label %panic8298, label %ok8299 +panic8298: + call void @finch_panic(ptr @.str.5750, i64 5153, ptr @.str.5751) unreachable -ok8292: +ok8299: %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: + br i1 %t225, label %then8300, label %endif8302 +then8300: %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) + br i1 %t227, label %panic8303, label %ok8304 +panic8303: + call void @finch_panic(ptr @.str.5752, i64 5154, ptr @.str.5753) unreachable -ok8297: +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 %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5750, i64 5154, i64 0, i64 %t230) + br i1 %t231, label %range8305, label %inrange8306 +range8305: + call void @finch_panic_index(ptr @.str.5754, i64 5154, i64 0, i64 %t230) unreachable -inrange8299: +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 @@ -76662,90 +76717,90 @@ inrange8299: 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) + br i1 %t243, label %panic8307, label %ok8308 +panic8307: + call void @finch_panic(ptr @.str.5755, i64 5156, ptr @.str.5756) unreachable -ok8301: +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.5753, i64 1, i64 0 }, ptr %a246 + 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 -endif8295: +endif8302: %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) + br i1 %t250, label %panic8309, label %ok8310 +panic8309: + call void @finch_panic(ptr @.str.5758, i64 5158, ptr @.str.5759) unreachable -ok8303: +ok8310: %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 14 store i64 0, ptr %a252 - br label %each.cond8304 -each.cond8304: + 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.body8305, label %each.end8307 -each.body8305: + 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 %then8308, label %endif8310 -then8308: + 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 %endif8310 -endif8310: - br label %each.step8306 -each.step8306: + 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.cond8304 -each.end8307: + br label %each.cond8311 +each.end8314: %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 + 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 %panic8314, label %ok8315 -panic8314: - call void @finch_panic(ptr @.str.5757, i64 5166, ptr @.str.5758) + br i1 %t271, label %panic8321, label %ok8322 +panic8321: + call void @finch_panic(ptr @.str.5761, i64 5166, ptr @.str.5762) unreachable -ok8315: +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 %then8316, label %endif8318 -then8316: - store { ptr, i64, i64 } { ptr @.str.5759, i64 10, i64 0 }, ptr %a269 - br label %endif8318 -endif8318: + 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 %panic8319, label %ok8320 -panic8319: - call void @finch_panic(ptr @.str.5760, i64 5169, ptr @.str.5761) + br i1 %t276, label %panic8326, label %ok8327 +panic8326: + call void @finch_panic(ptr @.str.5764, i64 5169, ptr @.str.5765) unreachable -ok8320: +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.5762, i64 6, i64 0 }, ptr %a281 + 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.5763, i64 107, i64 0 }, ptr %a286 + 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 @@ -76758,24 +76813,24 @@ ok8320: %t292 = load ptr, ptr %a46 %t293 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t292) ret { ptr, i64, i64 } %t293 -endif8313: +endif8320: %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) + br i1 %t295, label %panic8328, label %ok8329 +panic8328: + call void @finch_panic(ptr @.str.5768, i64 5173, ptr @.str.5769) unreachable -ok8322: +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 %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5766, i64 5173, i64 %t297, i64 %t299) + br i1 %t300, label %range8330, label %inrange8331 +range8330: + call void @finch_panic_index(ptr @.str.5770, i64 5173, i64 %t297, i64 %t299) unreachable -inrange8324: +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 @@ -76786,12 +76841,12 @@ inrange8324: %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 } { 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.5768, i64 1, i64 0 }, ptr %a317 + 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 @@ -76801,46 +76856,46 @@ inrange8324: 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 + 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.5770, i64 0, i64 0 }, ptr %a330 + 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 %then8325, label %endif8327 -then8325: - store { ptr, i64, i64 } { ptr @.str.5771, i64 133, i64 0 }, ptr %a330 + 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.5772, i64 20, i64 0 }, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.5776, i64 20, i64 0 }, ptr %a338 call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) %t339 = load { ptr, i64, i64 }, ptr %a336 store { ptr, i64, i64 } %t339, ptr %a329 - br label %endif8327 -endif8327: + br label %endif8334 +endif8334: %t340 = load { ptr, i64, i64 }, ptr %a329 store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.5773, i64 1, i64 0 }, ptr %a343 + store { ptr, i64, i64 } { ptr @.str.5777, 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 + 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 %then8328, label %else8329 -then8328: + br i1 %t347, label %then8335, label %else8336 +then8335: %t348 = load { ptr, i64, i64 }, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.5775, i64 5, i64 0 }, ptr %a350 + 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.5776, i64 2, i64 0 }, ptr %a356 + 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 @@ -76849,18 +76904,18 @@ then8328: 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 + 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.5778, i64 0, i64 0 }, ptr %a329 + 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.5779, i64 21, i64 0 }, ptr %a374 + store { ptr, i64, i64 } { ptr @.str.5783, i64 21, i64 0 }, ptr %a374 call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) %t375 = load { ptr, i64, i64 }, ptr %a372 %t376 = load { ptr, i64, i64 }, ptr %a370 @@ -76869,13 +76924,13 @@ then8328: 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 + 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.5781, i64 20, i64 0 }, ptr %a388 + 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 @@ -76884,13 +76939,13 @@ then8328: 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 + 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.5783, i64 62, i64 0 }, ptr %a402 + 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 @@ -76898,61 +76953,61 @@ then8328: %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 + 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 %then8331, label %endif8333 -then8331: + br i1 %t410, label %then8338, label %endif8340 +then8338: %t411 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5785, i64 20, i64 0 }, ptr %a413 + 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.5786, i64 53, i64 0 }, ptr %a418 + 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 %endif8333 -endif8333: - br label %endif8330 -else8329: + 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.5787, i64 3, i64 0 }, ptr %a424 + 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 %then8334, label %endif8336 -then8334: + br i1 %t426, label %then8341, label %endif8343 +then8341: %t427 = load { ptr, i64, i64 }, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.5788, i64 5, i64 0 }, ptr %a429 + 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.5789, i64 46, i64 0 }, ptr %a345 - br label %endif8336 -endif8336: - br label %endif8330 -endif8330: + 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 %panic8337, label %ok8338 -panic8337: - call void @finch_panic(ptr @.str.5790, i64 5198, ptr @.str.5791) + br i1 %t433, label %panic8344, label %ok8345 +panic8344: + call void @finch_panic(ptr @.str.5794, i64 5198, ptr @.str.5795) unreachable -ok8338: +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.5792, i64 48, i64 0 }, ptr %a438 + 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.5793, i64 2, i64 0 }, ptr %a443 + 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 @@ -76961,7 +77016,7 @@ ok8338: 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 + 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 @@ -76970,7 +77025,7 @@ ok8338: 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 + 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 @@ -77020,24 +77075,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.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 }) %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 @@ -77085,20 +77140,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.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 }) %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 @@ -77138,20 +77193,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.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 }) %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 @@ -77191,13 +77246,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.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 }) %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 @@ -77226,49 +77281,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.5959, 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.5960, 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.5961, 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.5962, 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.5963, 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.5964, 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.5965, 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.5966, 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.5967, 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.5968, 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.5969, 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.5970, 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.5971, 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.5972, 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.5973, 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.5974, 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.5975, 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.5976, 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.5977, 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.5978, 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.5979, 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.5980, 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 @@ -77281,39 +77336,39 @@ 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.5981, 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.5982, 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.5983, 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.5984, 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.5985, 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.5986, 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.5987, 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.5988, 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.5989, 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.5990, 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.5991, 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.5992, 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.5993, 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.5994, 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.5995, 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.5996, 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.5997, 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 @@ -77331,14 +77386,14 @@ entry: 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.cond8346 +each.cond8346: %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.body8347, label %each.end8349 +each.body8347: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -77350,18 +77405,18 @@ 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 %then8350, label %endif8352 +then8350: %t19 = load %S.docs.Doc, ptr %a11 ret %S.docs.Doc %t19 -endif8345: - br label %each.step8341 -each.step8341: +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.cond8339 -each.end8342: + br label %each.cond8346 +each.end8349: ret %S.docs.Doc zeroinitializer } @@ -77380,12 +77435,12 @@ entry: 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.5998, 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.5999, 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 @@ -77478,7 +77533,7 @@ entry: %a19 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5996, i64 5, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6000, 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 @@ -77563,10 +77618,10 @@ entry: %a121 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5997, i64 22, i64 0 }, ptr %a3 + 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.5998, i64 26, i64 0 }, ptr %a7 + 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 @@ -77575,7 +77630,7 @@ entry: call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.5999, i64 13, i64 0 }, ptr %a16 + 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 store { ptr, i64, i64 } %t17, ptr %a19 @@ -77586,33 +77641,33 @@ entry: %t23 = call i32 @finch_file_exists(ptr %a22) %t24 = icmp ne i32 %t23, 0 %t25 = xor i1 %t24, true - br i1 %t25, label %then8346, label %endif8348 -then8346: + 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 -endif8348: +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.6000, i64 110) + 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.6002, i64 1, i64 0 }, ptr %a37 + 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.cond8349 -each.cond8349: + 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.body8350, label %each.end8352 -each.body8350: + 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 @@ -77624,57 +77679,57 @@ each.body8350: 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 + 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 %then8353, label %endif8355 -then8353: + br i1 %t60, label %then8360, label %endif8362 +then8360: store i1 true, ptr %a30 - br label %each.step8351 -endif8355: + 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.6007, i64 19, i64 0 }, ptr %a64 + 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 %then8356, label %endif8358 -then8356: - br label %each.end8352 -endif8358: + 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.from8359 -logic.from8359: - br i1 %t68, label %logic.end8361, label %logic.rhs8360 -logic.rhs8360: + 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.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: + 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.6009, i64 22, i64 0 }, ptr %a76 + 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 %then8366, label %else8367 -then8366: + 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.6011, i64 124) + 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.6010, i64 11, i64 0 }, ptr %a88 + 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 @@ -77685,11 +77740,11 @@ then8366: %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: + 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.6012, i64 8, i64 0 }, ptr %a98 + 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 @@ -77700,22 +77755,22 @@ else8367: %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: + 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.cond8349 -each.end8352: + br label %each.cond8356 +each.end8359: %t107 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6013, i64 7, i64 0 }, ptr %a109 + 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.6014, i64 1, i64 0 }, ptr %a114 + 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 @@ -77776,38 +77831,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 %panic8376, label %ok8377 +panic8376: + call void @finch_panic(ptr @.str.6019, i64 139, ptr @.str.6020) unreachable -ok8370: +ok8377: %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 %then8378, label %endif8380 +then8378: %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 %panic8381, label %ok8382 +panic8381: + call void @finch_panic(ptr @.str.6021, i64 140, ptr @.str.6022) unreachable -ok8375: +ok8382: %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.missing8383, label %map.found8384 +map.missing8383: 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.6023, i64 140, ptr %a29) unreachable -map.found8377: +map.found8384: %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 @@ -77817,7 +77872,7 @@ map.found8377: call void @finch_str_copy(ptr %a37, ptr %a36) %t38 = load { ptr, i64, i64 }, ptr %a37 ret { ptr, i64, i64 } %t38 -endif8373: +endif8380: %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) @@ -77828,59 +77883,59 @@ 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.from8385 +logic.from8385: + br i1 %t48, label %logic.end8387, label %logic.rhs8386 +logic.rhs8386: %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.6025, 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.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: %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 %panic8392, label %ok8393 +panic8392: + call void @finch_panic(ptr @.str.6026, i64 144, ptr @.str.6027) unreachable -ok8386: +ok8393: %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 %panic8394, label %ok8395 +panic8394: + call void @finch_panic(ptr @.str.6029, i64 145, ptr @.str.6030) unreachable -ok8388: +ok8395: %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.6028, 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: + 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 %panic8389, label %ok8390 -panic8389: - call void @finch_panic(ptr @.str.6027, i64 147, ptr @.str.6028) + br i1 %t73, label %panic8396, label %ok8397 +panic8396: + call void @finch_panic(ptr @.str.6031, i64 147, ptr @.str.6032) unreachable -ok8390: +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 @@ -77891,14 +77946,14 @@ ok8390: %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: + 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.have8392 -map.have8392: + 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) @@ -77982,63 +78037,63 @@ 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 %panic8400, label %ok8401 +panic8400: + call void @finch_panic(ptr @.str.6033, i64 157, ptr @.str.6034) unreachable -ok8394: +ok8401: %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.from8402 +logic.from8402: + br i1 %t31, label %logic.end8404, label %logic.rhs8403 +logic.rhs8403: %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 %panic8405, label %ok8406 +panic8405: + call void @finch_panic(ptr @.str.6035, i64 157, ptr @.str.6036) unreachable -ok8399: +ok8406: %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.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: %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: +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 %then8404, label %endif8406 -then8404: - ret { ptr, i64, i64 } { ptr @.str.6033, i64 0, i64 0 } -endif8406: + 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 %panic8407, label %ok8408 -panic8407: - call void @finch_panic(ptr @.str.6034, i64 164, ptr @.str.6035) + br i1 %t51, label %panic8414, label %ok8415 +panic8414: + call void @finch_panic(ptr @.str.6038, i64 164, ptr @.str.6039) unreachable -ok8408: +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 @@ -78049,14 +78104,14 @@ ok8408: %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: + 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.have8410 -map.have8410: + 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 @@ -78075,12 +78130,12 @@ map.have8410: 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 %then8411, label %endif8413 -then8411: + 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.6036, i64 12, i64 0 }, ptr %t81 - br label %endif8413 -endif8413: + 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 @@ -78090,29 +78145,29 @@ endif8413: %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 %panic8414, label %ok8415 -panic8414: - call void @finch_panic(ptr @.str.6037, i64 172, ptr @.str.6038) + br i1 %t90, label %panic8421, label %ok8422 +panic8421: + call void @finch_panic(ptr @.str.6041, i64 172, ptr @.str.6042) unreachable -ok8415: +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.hit8416, label %remove.end8417 -remove.hit8416: + 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.end8417 -remove.end8417: + 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 %panic8418, label %ok8419 -panic8418: - call void @finch_panic(ptr @.str.6039, i64 173, ptr @.str.6040) + br i1 %t98, label %panic8425, label %ok8426 +panic8425: + call void @finch_panic(ptr @.str.6043, i64 173, ptr @.str.6044) unreachable -ok8419: +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 @@ -78124,14 +78179,14 @@ ok8419: %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: + 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.have8421 -map.have8421: + 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) @@ -78139,11 +78194,11 @@ map.have8421: 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) + br i1 %t117, label %panic8429, label %ok8430 +panic8429: + call void @finch_panic(ptr @.str.6045, i64 174, ptr @.str.6046) unreachable -ok8423: +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 @@ -78230,36 +78285,36 @@ entry: store %S.C.CXCursor %t34, ptr %a35 %t36 = call i32 @clang_Cursor_isBitField(ptr byval(%S.C.CXCursor) align 8 %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then8424, label %else8425 -then8424: + br i1 %t37, label %then8431, label %else8432 +then8431: %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 %panic8434, label %ok8435 +panic8434: + call void @finch_panic(ptr @.str.6048, i64 191, ptr @.str.6049) unreachable -ok8428: +ok8435: %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 %panic8436, label %ok8437 +panic8436: + call void @finch_panic(ptr @.str.6050, i64 191, ptr @.str.6051) unreachable -ok8430: +ok8437: %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 + 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 %endif8426 -else8425: + 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.from8431 -logic.from8431: - br i1 %t47, label %logic.rhs8432, label %logic.end8433 -logic.rhs8432: + 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) @@ -78267,24 +78322,24 @@ logic.rhs8432: 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.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: + 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 %endif8437 -else8436: + br label %endif8444 +else8443: %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) + br i1 %t58, label %panic8445, label %ok8446 +panic8445: + call void @finch_panic(ptr @.str.6052, i64 196, ptr @.str.6053) unreachable -ok8439: +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 @@ -78292,8 +78347,8 @@ ok8439: 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: + 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 @@ -78301,64 +78356,64 @@ then8440: 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: + br label %endif8449 +else8448: %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: + 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 %then8443, label %endif8445 -then8443: + br i1 %t74, label %then8450, label %endif8452 +then8450: %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) + br i1 %t76, label %panic8453, label %ok8454 +panic8453: + call void @finch_panic(ptr @.str.6054, i64 204, ptr @.str.6055) unreachable -ok8447: +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 %panic8448, label %ok8449 -panic8448: - call void @finch_panic(ptr @.str.6052, i64 204, ptr @.str.6053) + br i1 %t79, label %panic8455, label %ok8456 +panic8455: + call void @finch_panic(ptr @.str.6056, i64 204, ptr @.str.6057) unreachable -ok8449: +ok8456: %t80 = getelementptr inbounds %S.cimport.CStruct, ptr %t78, i32 0, i32 5 store i1 true, ptr %t80 - br label %endif8445 -endif8445: + 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 %then8450, label %endif8452 -then8450: + 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 %endif8452 -endif8452: + br label %endif8459 +endif8459: %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) + br i1 %t87, label %panic8460, label %ok8461 +panic8460: + call void @finch_panic(ptr @.str.6058, i64 209, ptr @.str.6059) unreachable -ok8454: +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 %panic8455, label %ok8456 -panic8455: - call void @finch_panic(ptr @.str.6056, i64 209, ptr @.str.6057) + br i1 %t90, label %panic8462, label %ok8463 +panic8462: + call void @finch_panic(ptr @.str.6060, i64 209, ptr @.str.6061) unreachable -ok8456: +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 @@ -78390,74 +78445,74 @@ entry: 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 %then8464, label %endif8466 +then8464: %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 %then8467, label %endif8469 +then8467: + %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6062, i64 2, i64 0 }) %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) ret %S.cimport.Mapped %t7 -endif8462: - %t8 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6059, i64 2, i64 0 }) +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 -endif8459: +endif8466: %t10 = load i64, ptr %a1 %t11 = icmp eq i64 %t10, 2 - br i1 %t11, label %then8463, label %endif8465 -then8463: + br i1 %t11, label %then8470, label %endif8472 +then8470: %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 }) + 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 -endif8468: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6061, i64 3, i64 0 }) +endif8475: + %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6065, i64 3, i64 0 }) %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) ret %S.cimport.Mapped %t16 -endif8465: +endif8472: %t17 = load i64, ptr %a1 %t18 = icmp eq i64 %t17, 4 - br i1 %t18, label %then8469, label %endif8471 -then8469: + br i1 %t18, label %then8476, label %endif8478 +then8476: %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 }) + 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 -endif8474: - %t22 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6063, i64 3, i64 0 }) +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 -endif8471: +endif8478: %t24 = load i64, ptr %a1 %t25 = icmp eq i64 %t24, 8 - br i1 %t25, label %then8475, label %endif8477 -then8475: + br i1 %t25, label %then8482, label %endif8484 +then8482: %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 }) + 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 }) %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) ret %S.cimport.Mapped %t28 -endif8480: - %t29 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6065, i64 3, i64 0 }) +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 -endif8477: +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.6066, i64 7, i64 0 }, ptr %a36 + 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.6067, i64 11, i64 0 }, ptr %a41 + 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) @@ -78523,171 +78578,171 @@ 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 %then8488, label %endif8490 +then8488: + %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6072, i64 4, i64 0 }) %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) ret %S.cimport.Mapped %t20 -endif8483: +endif8490: %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 }) + 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 -endif8486: +endif8493: %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: - %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 + br i1 %t26, label %logic.end8496, label %logic.rhs8495 logic.rhs8495: - %t34 = load i32, ptr %a16 - %t35 = icmp eq i32 %t34, 16 + %t27 = load i32, ptr %a16 + %t28 = icmp eq i32 %t27, 4 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: + %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: %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: + 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: %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: - %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.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 %t49, label %logic.end8515, label %logic.rhs8514 + br i1 %t42, label %logic.end8515, label %logic.rhs8514 logic.rhs8514: - %t50 = load i32, ptr %a16 - %t51 = icmp eq i32 %t50, 8 + %t43 = load i32, ptr %a16 + %t44 = icmp eq i32 %t43, 19 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: + %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: %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: + 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: %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: + 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: %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: + 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 -endif8531: +endif8538: %t64 = load i32, ptr %a16 %t65 = icmp eq i32 %t64, 106 - br i1 %t65, label %then8532, label %endif8534 -then8532: + 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 -endif8534: +endif8541: %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 }) + 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 -endif8537: +endif8544: %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 }) + 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 -endif8540: +endif8547: %t76 = load i32, ptr %a16 %t77 = icmp eq i32 %t76, 101 - br i1 %t77, label %then8541, label %endif8543 -then8541: + 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) @@ -78699,86 +78754,86 @@ then8541: %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: + 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.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.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 %t96, label %logic.end8557, label %logic.rhs8556 + br i1 %t92, label %logic.rhs8556, label %logic.end8557 logic.rhs8556: - %t97 = load %S.C.CXType, ptr %a85 - store %S.C.CXType %t97, ptr %a98 - %t99 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a98) - %t100 = icmp ne i32 %t99, 0 + %t93 = load i1, ptr %a3 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 + %t94 = phi i1 [ false, %logic.from8555 ], [ %t93, %logic.rend8558 ] + br i1 %t94, 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 + %t95 = load i1, ptr %a4 + %t96 = xor i1 %t95, true br label %logic.from8562 logic.from8562: - br i1 %t106, label %logic.end8564, label %logic.rhs8563 + br i1 %t96, 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 + %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: - %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: + %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.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 }) + 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 -endif8572: +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) @@ -78786,54 +78841,54 @@ endif8572: %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: + 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.6075, i64 4, i64 0 }, ptr %a128 + 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.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: + 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.6076, i64 5, i64 0 }, ptr %a136 + 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.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 }) + 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 -endif8583: +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 -endif8543: +endif8550: %t146 = load i32, ptr %a16 %t147 = icmp eq i32 %t146, 105 - br i1 %t147, label %then8584, label %endif8586 -then8584: + 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) @@ -78841,11 +78896,11 @@ then8584: 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 %then8587, label %endif8589 -then8587: - %t155 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6078, i64 23, i64 0 }) + 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 -endif8589: +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) @@ -78853,25 +78908,25 @@ endif8589: %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 }) + 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 -endif8592: - %t164 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6080, i64 5, i64 0 }, 0 +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.6081, i64 1, i64 0 }, 3 + %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 -endif8586: +endif8593: %t172 = load i32, ptr %a16 %t173 = icmp eq i32 %t172, 112 - br i1 %t173, label %then8593, label %endif8595 -then8593: + 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 @@ -78882,11 +78937,11 @@ then8593: %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: + br i1 %t183, label %then8603, label %endif8605 +then8603: %t184 = load %S.cimport.Mapped, ptr %a180 ret %S.cimport.Mapped %t184 -endif8598: +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 @@ -78895,26 +78950,26 @@ endif8598: %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: +endif8602: %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 }) + 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 }) ret %S.cimport.Mapped %t194 -endif8601: +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.6083, i64 17, i64 0 }, ptr %a202 + 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.6084, i64 1, i64 0 }, ptr %a207 + 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) @@ -78956,93 +79011,93 @@ entry: store i64 10, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6086, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6090, 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.from8609 +logic.from8609: + br i1 %t13, label %logic.end8611, label %logic.rhs8610 +logic.rhs8610: %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.6092, 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.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: 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.6093, i64 327) %t26 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t26, ptr %a6 - br label %endif8608 -else8607: + 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.from8609 -logic.from8609: - br i1 %t29, label %logic.rhs8610, label %logic.end8611 -logic.rhs8610: + 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 %range8612, label %inrange8613 -range8612: - call void @finch_panic_index(ptr @.str.6090, i64 328, i64 0, i64 %t31) + br i1 %t32, label %range8619, label %inrange8620 +range8619: + call void @finch_panic_index(ptr @.str.6094, i64 328, i64 0, i64 %t31) unreachable -inrange8613: +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.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: + 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: 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) + 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 %endif8617 -endif8617: - br label %endif8608 -endif8608: + 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.cond8618 -while.cond8618: + 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.body8619, label %while.end8620 -while.body8619: + 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 %range8621, label %inrange8622 -range8621: - call void @finch_panic_index(ptr @.str.6092, i64 336, i64 %t51, i64 %t53) + br i1 %t54, label %range8628, label %inrange8629 +range8628: + call void @finch_panic_index(ptr @.str.6096, i64 336, i64 %t51, i64 %t53) unreachable -inrange8622: +inrange8629: %t55 = extractvalue { ptr, i64, i64 } %t52, 0 %t56 = getelementptr inbounds i8, ptr %t55, i64 %t51 %t57 = load i8, ptr %t56 @@ -79050,83 +79105,83 @@ inrange8622: 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: + 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.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: + 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 %endif8629 -else8628: + br label %endif8636 +else8635: %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: + 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.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: + 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 %endif8636 -else8635: + br label %endif8643 +else8642: %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: + 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.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: + 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: - 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: + 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 @@ -79137,26 +79192,26 @@ endif8646: %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: + 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.body8648, label %while.end8649 -while.body8648: - store { ptr, i64, i64 } { ptr @.str.6093, i64 4, i64 0 }, ptr %a103 + 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 %range8650, label %inrange8651 -range8650: - call void @finch_panic_index(ptr @.str.6095, i64 354, i64 %t105, i64 %t107) + br i1 %t108, label %range8657, label %inrange8658 +range8657: + call void @finch_panic_index(ptr @.str.6099, i64 354, i64 %t105, i64 %t107) unreachable -inrange8651: +inrange8658: %t109 = extractvalue { ptr, i64, i64 } %t106, 0 %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 %t111 = load i8, ptr %t110 @@ -79166,32 +79221,32 @@ inrange8651: %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: - 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 + br i1 %t117, label %then8659, label %endif8661 then8659: 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: + 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 @@ -79272,11 +79327,11 @@ entry: 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 %panic8669, label %ok8670 +panic8669: + call void @finch_panic(ptr @.str.6100, i64 369, ptr @.str.6101) unreachable -ok8663: +ok8670: %t7 = getelementptr inbounds %S.cimport.Importer, ptr %t5, i32 0, i32 1 %t8 = load ptr, ptr %t7 %t10 = load %S.C.CXCursor, ptr %a2 @@ -79289,12 +79344,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.cond8671 +for.cond8671: %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.body8672, label %for.end8674 +for.body8672: %t20 = load i64, ptr %a17 %t21 = load ptr, ptr %a3 %t22 = getelementptr inbounds %S.C.CXToken, ptr %t21, i64 %t20 @@ -79302,18 +79357,18 @@ for.body8665: 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 %then8668, label %endif8670 -then8668: - br label %for.step8666 -endif8670: + br i1 %t26, label %then8675, label %endif8677 +then8675: + br label %for.step8673 +endif8677: %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 %panic8678, label %ok8679 +panic8678: + call void @finch_panic(ptr @.str.6102, i64 375, ptr @.str.6103) unreachable -ok8672: +ok8679: %t30 = getelementptr inbounds %S.cimport.Importer, ptr %t28, i32 0, i32 1 %t31 = load ptr, ptr %t30 %t32 = load i64, ptr %a17 @@ -79332,91 +79387,91 @@ 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.step8673 +for.step8673: %t45 = load i64, ptr %a17 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a17 - br label %for.cond8664 -for.end8667: + br label %for.cond8671 +for.end8674: %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 %panic8680, label %ok8681 +panic8680: + call void @finch_panic(ptr @.str.6104, i64 377, ptr @.str.6105) unreachable -ok8674: +ok8681: %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.cond8682 +while.cond8682: %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.from8685 +logic.from8685: + br i1 %t55, label %logic.rhs8686, label %logic.end8687 +logic.rhs8686: %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 %range8688, label %inrange8689 +range8688: + call void @finch_panic_index(ptr @.str.6106, i64 379, i64 0, i64 %t57) unreachable -inrange8682: +inrange8689: %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.6107, 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.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: %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 %range8694, label %inrange8695 +range8694: + call void @finch_panic_index(ptr @.str.6108, i64 379, i64 %t69, i64 %t71) unreachable -inrange8688: +inrange8695: %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.6109, 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.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: %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 %range8697, label %inrange8698 +range8697: + call void @finch_panic_index(ptr @.str.6110, i64 380, i64 0, i64 %t82) unreachable -inrange8691: +inrange8698: %t84 = load ptr, ptr %a14 %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i64 0 %t86 = load { ptr, i64, i64 }, ptr %t85 @@ -79424,78 +79479,78 @@ inrange8691: %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) + br i1 %t89, label %panic8699, label %ok8700 +panic8699: + call void @finch_panic(ptr @.str.6111, i64 381, ptr @.str.6112) unreachable -ok8693: +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.cond8675 -while.end8677: + 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.from8694 -logic.from8694: - br i1 %t97, label %logic.rhs8695, label %logic.end8696 -logic.rhs8695: + 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 %range8697, label %inrange8698 -range8697: - call void @finch_panic_index(ptr @.str.6109, i64 384, i64 0, i64 %t99) + br i1 %t100, label %range8704, label %inrange8705 +range8704: + call void @finch_panic_index(ptr @.str.6113, i64 384, i64 0, i64 %t99) unreachable -inrange8698: +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.6110, i64 1, i64 0 }, ptr %a105 + 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.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: + 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 %range8703, label %inrange8704 -range8703: - call void @finch_panic_index(ptr @.str.6111, i64 386, i64 0, i64 %t110) + br i1 %t111, label %range8710, label %inrange8711 +range8710: + call void @finch_panic_index(ptr @.str.6115, i64 386, i64 0, i64 %t110) unreachable -inrange8704: +inrange8711: %t112 = load ptr, ptr %a14 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0 %t114 = load { ptr, i64, i64 }, ptr %t113 call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - br label %endif8702 -endif8702: + 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 %then8705, label %endif8707 -then8705: + br i1 %t117, label %then8712, label %endif8714 +then8712: ret %S.cimport.Number zeroinitializer -endif8707: +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 %range8708, label %inrange8709 -range8708: - call void @finch_panic_index(ptr @.str.6112, i64 391, i64 0, i64 %t119) + br i1 %t120, label %range8715, label %inrange8716 +range8715: + call void @finch_panic_index(ptr @.str.6116, i64 391, i64 0, i64 %t119) unreachable -inrange8709: +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 @@ -79506,152 +79561,152 @@ inrange8709: %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: + 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 %range8713, label %inrange8714 -range8713: - call void @finch_panic_index(ptr @.str.6113, i64 392, i64 0, i64 %t132) + br i1 %t133, label %range8720, label %inrange8721 +range8720: + call void @finch_panic_index(ptr @.str.6117, i64 392, i64 0, i64 %t132) unreachable -inrange8714: +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.from8715 -logic.from8715: - br i1 %t137, label %logic.rhs8716, label %logic.end8717 -logic.rhs8716: + 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 %range8718, label %inrange8719 -range8718: - call void @finch_panic_index(ptr @.str.6114, i64 392, i64 0, i64 %t139) + br i1 %t140, label %range8725, label %inrange8726 +range8725: + call void @finch_panic_index(ptr @.str.6118, i64 392, i64 0, i64 %t139) unreachable -inrange8719: +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.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: + 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 %range8724, label %inrange8725 -range8724: - call void @finch_panic_index(ptr @.str.6115, i64 392, i64 0, i64 %t147) + br i1 %t148, label %range8731, label %inrange8732 +range8731: + call void @finch_panic_index(ptr @.str.6119, i64 392, i64 0, i64 %t147) unreachable -inrange8725: +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.rend8726 -logic.rend8726: - br label %logic.end8723 -logic.end8723: - %t153 = phi i1 [ true, %logic.from8721 ], [ %t152, %logic.rend8726 ] + 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.rend8727 -logic.rend8727: - br label %logic.end8712 -logic.end8712: - %t155 = phi i1 [ true, %logic.from8710 ], [ %t154, %logic.rend8727 ] - br i1 %t155, label %then8728, label %endif8730 -then8728: - ret %S.cimport.Number zeroinitializer -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: + br label %logic.end8719 +logic.end8719: + %t155 = phi i1 [ true, %logic.from8717 ], [ %t154, %logic.rend8734 ] + br i1 %t155, label %then8735, label %endif8737 +then8735: + 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.6121, i64 1, i64 0 }, ptr %a172 + 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.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: + 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.6123, i64 2, i64 0 }, ptr %a179 + 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.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t183 = phi i1 [ false, %logic.from8739 ], [ %t182, %logic.rend8742 ] + 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 %then8743, label %endif8745 -then8743: + 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 store { ptr, i64, i64 } %t189, ptr %a190 - br label %while.cond8746 -while.cond8746: + 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.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 + 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 %range8752, label %inrange8753 -range8752: - call void @finch_panic_index(ptr @.str.6126, i64 398, i64 %t198, i64 %t200) + br i1 %t201, label %range8759, label %inrange8760 +range8759: + call void @finch_panic_index(ptr @.str.6130, i64 398, i64 %t198, i64 %t200) unreachable -inrange8753: +inrange8760: %t202 = extractvalue { ptr, i64, i64 } %t199, 0 %t203 = getelementptr inbounds i8, ptr %t202, i64 %t198 %t204 = load i8, ptr %t203 @@ -79660,23 +79715,23 @@ inrange8753: 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: + 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.6127, i64 399) + 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.cond8746 -while.end8748: + 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 @@ -79685,20 +79740,20 @@ while.end8748: %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: + br i1 %t223, label %or.failed8762, label %or.ok8763 +or.failed8762: store { ptr, i64, i64 } %t224, ptr %a226 ret %S.cimport.Number zeroinitializer -or.ok8756: +or.ok8763: store double %t225, ptr %a227 %t228 = load i1, ptr %a94 - br i1 %t228, label %then8757, label %endif8759 -then8757: + 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 %endif8759 -endif8759: + 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 @@ -79710,24 +79765,24 @@ endif8759: %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: +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.from8760 -logic.from8760: - br i1 %t245, label %logic.rhs8761, label %logic.end8762 -logic.rhs8761: + 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.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: + 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 @@ -79735,8 +79790,8 @@ then8764: %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: + 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) @@ -79891,8 +79946,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 %then8774, label %else8775 +then8774: %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) @@ -79904,8 +79959,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 %then8777, label %endif8779 +then8777: %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) @@ -79918,49 +79973,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 %panic8780, label %ok8781 +panic8780: + call void @finch_panic(ptr @.str.6132, i64 433, ptr @.str.6133) unreachable -ok8774: +ok8781: %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.from8782 +logic.from8782: + br i1 %t43, label %logic.rhs8783, label %logic.end8784 +logic.rhs8783: %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 %panic8785, label %ok8786 +panic8785: + call void @finch_panic(ptr @.str.6134, i64 433, ptr @.str.6135) unreachable -ok8779: +ok8786: %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 %panic8787, label %ok8788 +panic8787: + call void @finch_panic(ptr @.str.6136, i64 433, ptr @.str.6137) unreachable -ok8781: +ok8788: %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.missing8789, label %map.found8790 +map.missing8789: 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.6138, i64 433, ptr %a55) unreachable -map.found8783: +map.found8790: %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 @@ -79969,25 +80024,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.rend8791 +logic.rend8791: + br label %logic.end8784 +logic.end8784: + %t65 = phi i1 [ false, %logic.from8782 ], [ %t64, %logic.rend8791 ] 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.from8792 +logic.from8792: + br i1 %t68, label %logic.rhs8793, label %logic.end8794 +logic.rhs8793: %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 %panic8795, label %ok8796 +panic8795: + call void @finch_panic(ptr @.str.6139, i64 434, ptr @.str.6140) unreachable -ok8789: +ok8796: %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 @@ -79995,21 +80050,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.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: %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 %panic8801, label %ok8802 +panic8801: + call void @finch_panic(ptr @.str.6141, i64 435, ptr @.str.6142) unreachable -ok8795: +ok8802: %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 @@ -80020,46 +80075,46 @@ 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.new8803, label %map.have8804 +map.new8803: %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.have8804 +map.have8804: %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 store { ptr, i64, i64 } %t79, ptr %a95 call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif8793 -endif8793: - br label %endif8772 -endif8772: - br label %endif8769 -else8768: + 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 %then8798, label %else8799 -then8798: + br i1 %t99, label %then8805, label %else8806 +then8805: %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) + br i1 %t101, label %panic8808, label %ok8809 +panic8808: + call void @finch_panic(ptr @.str.6143, i64 439, ptr @.str.6144) unreachable -ok8802: +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 %then8803, label %endif8805 -then8803: + br i1 %t107, label %then8810, label %endif8812 +then8810: ret void -endif8805: +endif8812: %t108 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t108, ptr %a109 call void @finch_str_copy(ptr %a110, ptr %a109) @@ -80067,11 +80122,11 @@ endif8805: %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) + br i1 %t114, label %panic8813, label %ok8814 +panic8813: + call void @finch_panic(ptr @.str.6145, i64 442, ptr @.str.6146) unreachable -ok8807: +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 @@ -80083,18 +80138,18 @@ ok8807: 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 %then8808, label %endif8810 -then8808: + 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.6143, i64 62, i64 0 }, ptr %t126 + 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 %panic8811, label %ok8812 -panic8811: - call void @finch_panic(ptr @.str.6144, i64 445, ptr @.str.6145) + br i1 %t129, label %panic8818, label %ok8819 +panic8818: + call void @finch_panic(ptr @.str.6148, i64 445, ptr @.str.6149) unreachable -ok8812: +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 @@ -80106,21 +80161,21 @@ ok8812: %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: + 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.have8814 -map.have8814: + 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 ret void -endif8810: +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) @@ -80132,18 +80187,18 @@ endif8810: %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: + 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.6146, i64 42, i64 0 }, ptr %t158 + 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 %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.6147, i64 451, ptr @.str.6148) + br i1 %t161, label %panic8825, label %ok8826 +panic8825: + call void @finch_panic(ptr @.str.6151, i64 451, ptr @.str.6152) unreachable -ok8819: +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 @@ -80155,21 +80210,21 @@ ok8819: %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: + 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.have8821 -map.have8821: + 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 ret void -endif8817: +endif8824: %t179 = load ptr, ptr %a1 %t181 = load %S.C.CXType, ptr %a154 store %S.C.CXType %t181, ptr %a182 @@ -80179,8 +80234,8 @@ endif8817: 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: + 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 @@ -80188,8 +80243,8 @@ then8822: 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: + 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 @@ -80197,8 +80252,8 @@ else8823: 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: + 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) @@ -80206,20 +80261,20 @@ endif8824: store i64 %t203, ptr %a204 %t205 = load i64, ptr %a204 store i64 0, ptr %a206 - br label %for.cond8825 -for.cond8825: + br label %for.cond8832 +for.cond8832: %t207 = load i64, ptr %a206 %t208 = icmp slt i64 %t207, %t205 - br i1 %t208, label %for.body8826, label %for.end8828 -for.body8826: + 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 %then8829, label %endif8831 -then8829: - br label %for.end8828 -endif8831: + 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 @@ -80231,8 +80286,8 @@ endif8831: 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: + 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 @@ -80247,8 +80302,8 @@ then8832: %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: + 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 @@ -80256,15 +80311,15 @@ else8833: 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: + 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.cond8825 -for.end8828: + 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) @@ -80274,11 +80329,11 @@ for.end8828: %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) + br i1 %t250, label %panic8842, label %ok8843 +panic8842: + call void @finch_panic(ptr @.str.6153, i64 473, ptr @.str.6154) unreachable -ok8836: +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 @@ -80290,55 +80345,55 @@ ok8836: %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: + 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.have8838 -map.have8838: + 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 %endif8800 -else8799: + br label %endif8807 +else8806: %t268 = load i32, ptr %a13 %t269 = icmp eq i32 %t268, 9 - br i1 %t269, label %then8839, label %else8840 -then8839: + 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.from8842 -logic.from8842: - br i1 %t273, label %logic.end8844, label %logic.rhs8843 -logic.rhs8843: + 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 %panic8845, label %ok8846 -panic8845: - call void @finch_panic(ptr @.str.6151, i64 475, ptr @.str.6152) + br i1 %t275, label %panic8852, label %ok8853 +panic8852: + call void @finch_panic(ptr @.str.6155, i64 475, ptr @.str.6156) unreachable -ok8846: +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.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: + 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: ret void -endif8850: +endif8857: %t283 = load ptr, ptr %a1 %t285 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t285, ptr %a286 @@ -80348,17 +80403,17 @@ endif8850: 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: + 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 %panic8854, label %ok8855 -panic8854: - call void @finch_panic(ptr @.str.6153, i64 480, ptr @.str.6154) + br i1 %t295, label %panic8861, label %ok8862 +panic8861: + call void @finch_panic(ptr @.str.6157, i64 480, ptr @.str.6158) unreachable -ok8855: +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 @@ -80370,60 +80425,60 @@ ok8855: %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: + 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.have8857 -map.have8857: + 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 %endif8853 -endif8853: - br label %endif8841 -else8840: + br label %endif8860 +endif8860: + br label %endif8848 +else8847: %t313 = load i32, ptr %a13 %t314 = icmp eq i32 %t313, 2 - br i1 %t314, label %then8858, label %else8859 -then8858: + 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.from8861 -logic.from8861: - br i1 %t318, label %logic.rhs8862, label %logic.end8863 -logic.rhs8862: + 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.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: + 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.6156, i64 1, i64 0 }, ptr %a326 + 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.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: + 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) @@ -80433,27 +80488,27 @@ then8869: 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) + br i1 %t339, label %panic8879, label %ok8880 +panic8879: + call void @finch_panic(ptr @.str.6161, i64 485, ptr @.str.6162) unreachable -ok8873: +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 %then8874, label %endif8876 -then8874: + 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 %panic8877, label %ok8878 -panic8877: - call void @finch_panic(ptr @.str.6159, i64 486, ptr @.str.6160) + br i1 %t348, label %panic8884, label %ok8885 +panic8884: + call void @finch_panic(ptr @.str.6163, i64 486, ptr @.str.6164) unreachable -ok8878: +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 @@ -80464,46 +80519,46 @@ ok8878: %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: + 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.have8880 -map.have8880: + 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 %endif8876 -endif8876: - br label %endif8871 -endif8871: - br label %endif8860 -else8859: + 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 %then8881, label %else8882 -then8881: + 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 %endif8883 -else8882: + br label %endif8890 +else8889: %t371 = load i32, ptr %a13 %t372 = icmp eq i32 %t371, 7 - br i1 %t372, label %then8884, label %else8885 -then8884: + br i1 %t372, label %then8891, label %else8892 +then8891: %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) + br i1 %t374, label %panic8894, label %ok8895 +panic8894: + call void @finch_panic(ptr @.str.6165, i64 492, ptr @.str.6166) unreachable -ok8888: +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 @@ -80511,19 +80566,19 @@ ok8888: %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: + 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 %panic8892, label %ok8893 -panic8892: - call void @finch_panic(ptr @.str.6163, i64 493, ptr @.str.6164) + br i1 %t387, label %panic8899, label %ok8900 +panic8899: + call void @finch_panic(ptr @.str.6167, i64 493, ptr @.str.6168) unreachable -ok8893: +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 @@ -80535,62 +80590,62 @@ ok8893: %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: + 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.have8895 -map.have8895: + 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 %endif8891 -endif8891: - br label %endif8886 -else8885: + br label %endif8898 +endif8898: + br label %endif8893 +else8892: %t402 = load i32, ptr %a13 %t403 = icmp eq i32 %t402, 501 - br i1 %t403, label %then8896, label %endif8898 -then8896: + br i1 %t403, label %then8903, label %endif8905 +then8903: %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.from8899 -logic.from8899: - br i1 %t407, label %logic.end8901, label %logic.rhs8900 -logic.rhs8900: + 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.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: + 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: ret void -endif8905: +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.from8906 -logic.from8906: - br i1 %t418, label %logic.rhs8907, label %logic.end8908 -logic.rhs8907: + 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 %panic8909, label %ok8910 -panic8909: - call void @finch_panic(ptr @.str.6165, i64 500, ptr @.str.6166) + br i1 %t420, label %panic8916, label %ok8917 +panic8916: + call void @finch_panic(ptr @.str.6169, i64 500, ptr @.str.6170) unreachable -ok8910: +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 @@ -80598,22 +80653,22 @@ ok8910: %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: + 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 %panic8915, label %ok8916 -panic8915: - call void @finch_panic(ptr @.str.6167, i64 501, ptr @.str.6168) + br i1 %t432, label %panic8922, label %ok8923 +panic8922: + call void @finch_panic(ptr @.str.6171, i64 501, ptr @.str.6172) unreachable -ok8916: +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 @@ -80625,35 +80680,35 @@ ok8916: %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: + 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.have8918 -map.have8918: + 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 %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: + 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: ret void } @@ -80775,8 +80830,8 @@ entry: %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t8 = load i64, ptr %t7 %t9 = icmp eq i64 %t8, 0 - br i1 %t9, label %then8919, label %endif8921 -then8919: + br i1 %t9, label %then8926, label %endif8928 +then8926: %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 @@ -80785,15 +80840,15 @@ then8919: %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: +endif8928: %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.6173, 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.6174, 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.6175, 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 @@ -80801,11 +80856,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 %then8929, label %endif8931 +then8929: %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.6176, 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 @@ -80816,37 +80871,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 %endif8931 +endif8931: %t39 = load i1, ptr %a4 - br i1 %t39, label %then8925, label %endif8927 -then8925: + br i1 %t39, label %then8932, label %endif8934 +then8932: %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.6177, i64 19, i64 0 }, ptr %t44 store i64 %t42, ptr %t40 - br label %endif8927 -endif8927: + br label %endif8934 +endif8934: store i64 0, ptr %a45 - br label %each.cond8928 -each.cond8928: + br label %each.cond8935 +each.cond8935: %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.body8936, label %each.end8938 +each.body8936: %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.6178, 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 @@ -80857,25 +80912,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.step8937 +each.step8937: %t64 = load i64, ptr %a45 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a45 - br label %each.cond8928 -each.end8931: + br label %each.cond8935 +each.end8938: %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.cond8939 +each.cond8939: %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.body8940, label %each.end8942 +each.body8940: %t74 = load ptr, ptr %a68 %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 %t76 = load { ptr, i64, i64 }, ptr %t75 @@ -80892,39 +80947,39 @@ 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.step8941 +each.step8941: %t87 = load i64, ptr %a69 %t88 = add i64 %t87, 1 store i64 %t88, ptr %a69 - br label %each.cond8932 -each.end8935: + br label %each.cond8939 +each.end8942: 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.cond8943 +for.cond8943: %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.body8944, label %for.end8946 +for.body8944: %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 %range8947, label %inrange8948 +range8947: + call void @finch_panic_index(ptr @.str.6179, i64 528, i64 %t96, i64 %t98) unreachable -inrange8941: +inrange8948: %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.6180, 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)) @@ -80932,47 +80987,47 @@ 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.step8945 +for.step8945: %t110 = load i64, ptr %a92 %t111 = add i64 %t110, 1 store i64 %t111, ptr %a92 - br label %for.cond8936 -for.end8939: + br label %for.cond8943 +for.end8946: %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.cond8949 +each.cond8949: %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.body8950, label %each.end8952 +each.body8950: %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.6181, 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.6182, 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 + %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.6180, ptr %t134 + %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.6181, ptr %t139 + %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 @@ -80982,9 +81037,9 @@ each.body8943: %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 + %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.6183, ptr %t151 + %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 @@ -80996,23 +81051,23 @@ each.body8943: 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: + 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.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: + 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.6184, i64 33, i64 0 }, ptr %a172 + 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 @@ -81022,24 +81077,24 @@ then8950: 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 + 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 -endif8952: +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.cond8953 -for.cond8953: + br label %for.cond8960 +for.cond8960: %t191 = load i64, ptr %a190 %t192 = icmp slt i64 %t191, %t189 - br i1 %t192, label %for.body8954, label %for.end8956 -for.body8954: + 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 @@ -81048,8 +81103,8 @@ for.body8954: %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: + 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 @@ -81060,24 +81115,24 @@ then8957: call void @clang_disposeDiagnostic(ptr %t207) %t208 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.6187, i64 14, i64 0 }, ptr %a211 + 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 %then8960, label %endif8962 -then8960: + 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 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) + 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.6191, i64 1, i64 0 }, ptr %a225 + 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.6188, i64 548) + 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 @@ -81087,12 +81142,12 @@ then8960: 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: + 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.6192, i64 34, i64 0 }, ptr %a241 + 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 @@ -81102,16 +81157,16 @@ then8963: 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 + store { ptr, i64, i64 } { ptr @.str.6197, i64 1, i64 0 }, ptr %a251 call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) %t252 = load { ptr, i64, i64 }, ptr %a249 %t253 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t252, 2 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t253 -endif8965: +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.6194, i64 34, i64 0 }, ptr %a258 + 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 @@ -81120,7 +81175,7 @@ endif8965: 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 + 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 @@ -81130,16 +81185,16 @@ endif8965: 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 + 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 -endif8962: +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.6197, i64 19, i64 0 }, ptr %a284 + 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 @@ -81149,7 +81204,7 @@ endif8962: 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.6198, i64 16, i64 0 }, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.6202, i64 16, i64 0 }, ptr %a294 call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) %t295 = load { ptr, i64, i64 }, ptr %a292 %t296 = load { ptr, i64, i64 }, ptr %a206 @@ -81159,16 +81214,16 @@ endif8962: %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: +endif8966: %t302 = load ptr, ptr %a197 call void @clang_disposeDiagnostic(ptr %t302) - br label %for.step8955 -for.step8955: + br label %for.step8962 +for.step8962: %t303 = load i64, ptr %a190 %t304 = add i64 %t303, 1 store i64 %t304, ptr %a190 - br label %for.cond8953 -for.end8956: + 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 @@ -81186,13 +81241,13 @@ for.end8956: %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.step8944 -each.step8944: + br label %each.step8951 +each.step8951: %t319 = load i64, ptr %a114 %t320 = add i64 %t319, 1 store i64 %t320, ptr %a114 - br label %each.cond8942 -each.end8945: + 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 @@ -81223,18 +81278,18 @@ entry: call void @finch_str_trim(ptr %a4, ptr %a3) %t5 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6201, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6205, 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) + br i1 %t14, label %range8973, label %inrange8974 +range8973: + call void @finch_panic_index(ptr @.str.6206, i64 20, i64 0, i64 %t13) unreachable -inrange8967: +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 @@ -81270,14 +81325,14 @@ entry: %a35 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } { ptr @.str.6204, i64 21, i64 0 }, ptr %a1 + 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.6205, i64 22, i64 0 }, ptr %a4 + 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.6206, i64 14, i64 0 }, ptr %a9 + 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 @@ -81291,24 +81346,24 @@ entry: %t19 = icmp eq i32 %t18, 0 %t20 = load { ptr, i64, i64 }, ptr %a17 %t21 = load { ptr, i64, i64 }, ptr %a16 - br i1 %t19, label %or.failed8968, label %or.ok8969 -or.failed8968: + br i1 %t19, label %or.failed8975, label %or.ok8976 +or.failed8975: 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 ] + 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.6208, i64 7, i64 0 }, ptr %a27 + 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.6209, i64 1, i64 0 }, ptr %a32 + 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 @@ -81320,10 +81375,10 @@ or.end8971: %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: + 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 @@ -81425,117 +81480,117 @@ entry: %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t10 = load i64, ptr %t9 %t11 = icmp eq i64 %t10, 0 - br i1 %t11, label %then8975, label %else8976 -then8975: + br i1 %t11, label %then8982, label %else8983 +then8982: %t12 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t12, ptr %a13 call void @finch_str_copy(ptr %a14, ptr %a13) %t15 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t15, ptr %a8 - br label %endif8977 -else8976: + br label %endif8984 +else8983: %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 + 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 %then8978, label %else8979 -then8978: - store { ptr, i64, i64 } { ptr @.str.6213, i64 18, i64 0 }, ptr %a8 - br label %endif8980 -else8979: + 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.6214, i64 5, i64 0 }, ptr %a23 + 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 %then8981, label %else8982 -then8981: - store { ptr, i64, i64 } { ptr @.str.6215, i64 24, i64 0 }, ptr %a8 - br label %endif8983 -else8982: + 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.6216, i64 5, i64 0 }, ptr %a28 + 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.from8984 -logic.from8984: - br i1 %t30, label %logic.end8986, label %logic.rhs8985 -logic.rhs8985: + 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.6217, i64 7, i64 0 }, ptr %a33 + 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.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: + 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: %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.6222, i64 11, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br label %logic.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.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: %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.6224, i64 5, i64 0 }, ptr %a45 %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) %t47 = icmp ne i32 %t46, 0 - br i1 %t47, label %then8995, label %endif8997 -then8995: + 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.6222, i64 7, i64 0 }, ptr %a51 + 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.from8998 -logic.from8998: - br i1 %t53, label %logic.end9000, label %logic.rhs8999 -logic.rhs8999: + 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.6224, i64 5, i64 0 }, ptr %a57 + 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.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 %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 %endif8997 -endif8997: - br label %endif8994 -endif8994: - br label %endif8983 -endif8983: - br label %endif8980 -endif8980: - br label %endif8977 -endif8977: + 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) @@ -81544,199 +81599,199 @@ endif8977: 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 + 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.from9005 -logic.from9005: - br i1 %t72, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: + br label %logic.from9012 +logic.from9012: + br i1 %t72, label %logic.end9014, label %logic.rhs9013 +logic.rhs9013: %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 + 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.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: + 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.6232, i64 4, i64 0 }, ptr %a83 + 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.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: + 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.6234, i64 5, i64 0 }, ptr %a90 + 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.rend9016 -logic.rend9016: - br label %logic.end9015 -logic.end9015: - %t93 = phi i1 [ true, %logic.from9013 ], [ %t92, %logic.rend9016 ] + 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.6236, i64 4, i64 0 }, ptr %a98 + 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.6238, i64 5, i64 0 }, ptr %a105 + 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.from9017 -logic.from9017: - br i1 %t107, label %logic.end9019, label %logic.rhs9018 -logic.rhs9018: + 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.6240, i64 6, i64 0 }, ptr %a111 + 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.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: + 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.6242, i64 5, i64 0 }, ptr %a118 + 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.rend9024 -logic.rend9024: - br label %logic.end9023 -logic.end9023: - %t121 = phi i1 [ true, %logic.from9021 ], [ %t120, %logic.rend9024 ] + 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.6244, i64 7, i64 0 }, ptr %a126 + 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.from9025 -logic.from9025: - br i1 %t128, label %logic.end9027, label %logic.rhs9026 -logic.rhs9026: + 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.6246, i64 5, i64 0 }, ptr %a132 + 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.rend9028 -logic.rend9028: - br label %logic.end9027 -logic.end9027: - %t135 = phi i1 [ true, %logic.from9025 ], [ %t134, %logic.rend9028 ] + 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.6248, i64 7, i64 0 }, ptr %a140 + 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.from9029 -logic.from9029: - br i1 %t142, label %logic.end9031, label %logic.rhs9030 -logic.rhs9030: + 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.6250, i64 5, i64 0 }, ptr %a146 + 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.rend9032 -logic.rend9032: - br label %logic.end9031 -logic.end9031: - %t149 = phi i1 [ true, %logic.from9029 ], [ %t148, %logic.rend9032 ] + 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.6252, i64 5, i64 0 }, ptr %a154 + 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.from9033 -logic.from9033: - br i1 %t156, label %logic.end9035, label %logic.rhs9034 -logic.rhs9034: + 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.6254, i64 6, i64 0 }, ptr %a160 + 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.rend9036 -logic.rend9036: - br label %logic.end9035 -logic.end9035: - %t163 = phi i1 [ true, %logic.from9033 ], [ %t162, %logic.rend9036 ] + 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.from9037 -logic.from9037: - br i1 %t166, label %logic.end9039, label %logic.rhs9038 -logic.rhs9038: + 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.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: + 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.rend9044 -logic.rend9044: - br label %logic.end9043 -logic.end9043: - %t176 = phi i1 [ true, %logic.from9041 ], [ %t175, %logic.rend9044 ] + 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.6255, i64 0, i64 0 }, ptr %t178 + 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 %t180 = load i1, ptr %t179 - br i1 %t180, label %then9045, label %endif9047 -then9045: + 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.6256, i64 4, i64 0 }, ptr %t181 - br label %endif9047 -endif9047: - %t182 = extractvalue { ptr, i64, i64 } { ptr @.str.6257, i64 8, i64 0 }, 0 + 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.6258, ptr %t182 + %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) @@ -81748,141 +81803,141 @@ endif9047: %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: + 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 %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 + %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 %t207, label %logic.rhs9059, label %logic.end9060 + br i1 %t201, 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 + %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: - %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: + %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.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: + 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.6260, i64 21, i64 0 }, ptr %t215 - br label %endif9068 -else9067: + 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 %then9069, label %else9070 -then9069: + br i1 %t217, label %then9076, label %else9077 +then9076: %t218 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6261, i64 15, i64 0 }, ptr %a220 + 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 %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 - %t232 = load i1, ptr %t231 + %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 %t232, label %logic.rhs9080, label %logic.end9081 + br i1 %t226, 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 + %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: - %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: + %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 + %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.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: + 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.6264, i64 13, i64 0 }, ptr %t240 - br label %endif9089 -endif9089: - br label %endif9078 -endif9078: + 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) @@ -81897,28 +81952,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.from9097 +logic.from9097: + br i1 %t4, label %logic.end9099, label %logic.rhs9098 +logic.rhs9098: %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.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: %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.rend9104 +logic.rend9104: + br label %logic.end9103 +logic.end9103: + %t10 = phi i1 [ true, %logic.from9101 ], [ %t9, %logic.rend9104 ] ret i1 %t10 } @@ -81937,14 +81992,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.cond9105 +each.cond9105: %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.body9106, label %each.end9108 +each.body9106: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t6 %t10 = load i8, ptr %t9 @@ -81955,22 +82010,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.step9107 +each.step9107: %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.cond9105 +each.end9108: + store { ptr, i64, i64 } { ptr @.str.6269, 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.cond9109 +for.cond9109: %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.body9110, label %for.end9112 +for.body9110: %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 %t25 = load i32, ptr %a2 %t26 = load i64, ptr %a21 @@ -81983,11 +82038,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 %range9113, label %inrange9114 +range9113: + call void @finch_panic_index(ptr @.str.6270, i64 17, i64 %t32, i64 %t34) unreachable -inrange9107: +inrange9114: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -82000,15 +82055,15 @@ 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.step9111 +for.step9111: %t45 = load i64, ptr %a21 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a21 - br label %for.cond9102 -for.end9105: + br label %for.cond9109 +for.end9112: %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.6271, i64 0, i64 0 }, ptr %a48 call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) %t50 = load { ptr, i64, i64 }, ptr %a49 ret { ptr, i64, i64 } %t50 @@ -82030,16 +82085,16 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6270, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, ptr %a6 + 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.6268, i64 1, i64 0 }, ptr %a9 + 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.6272, i64 1, i64 0 }, ptr %a14 + 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 @@ -82061,9 +82116,9 @@ entry: %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6273, i64 14, i64 0 }, 0 + %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.6274, ptr %t1 + %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) @@ -82075,18 +82130,18 @@ entry: %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 %t12 = load i64, ptr %t11 %t13 = icmp sgt i64 %t12, 0 - br i1 %t13, label %then9108, label %endif9110 -then9108: + 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.6275, i64 6, i64 0 }, ptr %a17 + 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 -endif9110: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6276, i64 4, i64 0 }, 0 +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.6277, ptr %t19 + %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) @@ -82098,16 +82153,16 @@ endif9110: %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: + 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.6278, i64 13, i64 0 }, ptr %a35 + 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 -endif9113: - ret { ptr, i64, i64 } { ptr @.str.6279, i64 16, i64 0 } +endif9120: + ret { ptr, i64, i64 } { ptr @.str.6283, i64 16, i64 0 } } define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) { @@ -82161,39 +82216,39 @@ entry: store %S.platform.Target %p1, ptr %a2 %t3 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6281, i64 10, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6285, 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 %then9121, label %endif9123 +then9121: %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.6287, i64 42) %t15 = load { ptr, i64, i64 }, ptr %a11 %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } { ptr @.str.6282, i64 11, i64 0 }, ptr %a18 + 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 -endif9116: +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 %then9117, label %endif9119 -then9117: - store { ptr, i64, i64 } { ptr @.str.6284, i64 24, i64 0 }, ptr %a24 + 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.6285, i64 18, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6289, i64 18, i64 0 }, ptr %a28 store { ptr, i64, i64 } %t26, ptr %a29 call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, ptr %a33 + 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 @@ -82202,7 +82257,7 @@ then9117: 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 + 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 @@ -82211,21 +82266,21 @@ then9117: 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: + 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.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: + 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 @@ -82234,27 +82289,27 @@ then9124: %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: + br i1 %t60, label %or.failed9134, label %or.ok9135 +or.failed9134: 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 ] + 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.6290, i64 7, i64 0 }, ptr %a71 + 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.6291, i64 1, i64 0 }, ptr %a76 + 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 @@ -82263,17 +82318,17 @@ or.end9130: %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: + 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: - 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 } { 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 @@ -82312,140 +82367,140 @@ entry: store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6294, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6298, 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.cond9141 +while.cond9141: %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.body9142, label %while.end9143 +while.body9142: %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.6299, i64 63) %t22 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t22, ptr %a6 %t23 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.6297, i64 1, i64 0 }, ptr %a26 + 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.cond9134 -while.end9136: + 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.cond9137 -for.cond9137: + br label %for.cond9144 +for.cond9144: %t34 = load i64, ptr %a33 %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body9138, label %for.end9140 -for.body9138: + 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 %range9141, label %inrange9142 -range9141: - call void @finch_panic_index(ptr @.str.6298, i64 68, i64 %t36, i64 %t38) + br i1 %t39, label %range9148, label %inrange9149 +range9148: + call void @finch_panic_index(ptr @.str.6302, i64 68, i64 %t36, i64 %t38) unreachable -inrange9142: +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 %then9143, label %endif9145 -then9143: + br i1 %t43, label %then9150, label %endif9152 +then9150: %t44 = load i64, ptr %a33 store i64 %t44, ptr %a30 - br label %endif9145 -endif9145: - br label %for.step9139 -for.step9139: + 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.cond9137 -for.end9140: + 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.6299, i64 72) + 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.cond9146 -while.cond9146: + 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.from9149 -logic.from9149: - br i1 %t54, label %logic.rhs9150, label %logic.end9151 -logic.rhs9150: + 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 %range9152, label %inrange9153 -range9152: - call void @finch_panic_index(ptr @.str.6300, i64 73, i64 %t57, i64 %t59) + br i1 %t60, label %range9159, label %inrange9160 +range9159: + call void @finch_panic_index(ptr @.str.6304, i64 73, i64 %t57, i64 %t59) unreachable -inrange9153: +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.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: + 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 %range9158, label %inrange9159 -range9158: - call void @finch_panic_index(ptr @.str.6301, i64 73, i64 %t68, i64 %t70) + br i1 %t71, label %range9165, label %inrange9166 +range9165: + call void @finch_panic_index(ptr @.str.6305, i64 73, i64 %t68, i64 %t70) unreachable -inrange9159: +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.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: + 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.6302, i64 74) + 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.cond9146 -while.end9148: + 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) @@ -82466,10 +82521,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.from9168 +logic.from9168: + br i1 %t4, label %logic.rhs9169, label %logic.end9170 +logic.rhs9169: %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 @@ -82477,37 +82532,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.cond9171 +find.cond9171: %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.body9172, label %find.end9175 +find.body9172: %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.hit9173, label %find.next9174 +find.hit9173: store i64 %t12, ptr %a8 - br label %find.end9168 -find.next9167: + br label %find.end9175 +find.next9174: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond9164 -find.end9168: + br label %find.cond9171 +find.end9175: %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.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: %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 @@ -82521,8 +82576,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 %endif9179 +endif9179: ret void } @@ -82556,10 +82611,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 %then9180, label %endif9182 +then9180: + ret { ptr, i64, i64 } { ptr @.str.6309, i64 0, i64 0 } +endif9182: %t13 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t13, ptr %a14 %t16 = load i64, ptr %a10 @@ -82568,31 +82623,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.6310, i64 95) %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.cond9183 +while.cond9183: %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.from9186 +logic.from9186: + br i1 %t28, label %logic.rhs9187, label %logic.end9188 +logic.rhs9187: %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 %range9189, label %inrange9190 +range9189: + call void @finch_panic_index(ptr @.str.6312, i64 97, i64 %t32, i64 %t34) unreachable -inrange9183: +inrange9190: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -82602,22 +82657,22 @@ inrange9183: %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: + 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.cond9176 -while.end9178: + 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.6309, i64 100) + 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 } @@ -82768,19 +82823,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.6315, 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.cond9192 +each.cond9192: %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.body9193, label %each.end9195 +each.body9193: %t18 = load ptr, ptr %a12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -82792,295 +82847,295 @@ 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.6318, 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 %then9196, label %else9197 +then9196: %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.6319, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 1, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - br label %endif9191 -else9190: + br label %endif9198 +else9197: %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 + 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 %then9192, label %else9193 -then9192: + 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.6319, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 2, i64 0 }) + %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 %endif9194 -else9193: + br label %endif9201 +else9200: %t43 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6322, i64 27, i64 0 }, ptr %a46 + 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 %then9195, label %else9196 -then9195: + 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.6323, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 3, i64 0 }) + %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 %endif9197 -else9196: + br label %endif9204 +else9203: %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 + 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 %then9198, label %else9199 -then9198: + 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.6327, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6328, i64 4, i64 0 }) + %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 %endif9200 -else9199: + br label %endif9207 +else9206: %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 + 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 %then9201, label %else9202 -then9201: + 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.6331, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 4, i64 0 }) + %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 %endif9203 -else9202: + br label %endif9210 +else9209: %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 + 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 %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: - %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 - %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 + br i1 %t72, 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) + %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: - %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 + %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 %t99, label %logic.rhs9215, label %logic.end9216 + br i1 %t80, label %logic.rhs9215, label %logic.end9216 logic.rhs9215: - %t100 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.6347, i64 19, i64 0 }, ptr %a103 - %t104 = call i64 @finch_str_find(ptr %a101, ptr %a103) - %t105 = icmp sge i64 %t104, 0 + %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 + %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: - %t106 = phi i1 [ false, %logic.from9214 ], [ %t105, %logic.rend9217 ] - br i1 %t106, label %then9218, label %endif9220 + %t87 = phi i1 [ false, %logic.from9214 ], [ %t86, %logic.rend9217 ] + br i1 %t87, label %then9218, label %else9219 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 - store { ptr, i64, i64 } %t115, ptr %a116 - %t117 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t118 = load i1, ptr %t117 + %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: + %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 %t118, label %logic.rhs9222, label %logic.end9223 + br i1 %t99, 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 + %t100 = load { ptr, i64, i64 }, ptr %a26 + 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: - %t125 = phi i1 [ false, %logic.from9221 ], [ %t124, %logic.rend9224 ] - br i1 %t125, label %then9225, label %endif9227 + %t106 = phi i1 [ false, %logic.from9221 ], [ %t105, %logic.rend9224 ] + br i1 %t106, 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 + %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 + 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 %t138, label %logic.rhs9229, label %logic.end9230 + br i1 %t118, 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 + %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: - %t143 = phi i1 [ false, %logic.from9228 ], [ %t142, %logic.rend9231 ] - br i1 %t143, label %then9232, label %endif9234 + %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.6354, i64 21, i64 0 }, ptr %a147 + 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.6355, ptr %t151 - %t154 = call i32 (ptr, ...) @printf(ptr @.str.6356, i32 %t150, ptr %t153) - %t155 = call i32 (ptr, ...) @printf(ptr @.str.6357) + %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) ret i64 1 -endif9234: +endif9241: %t156 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 store i64 0, ptr %a157 - br label %each.cond9235 -each.cond9235: + 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.body9236, label %each.end9238 -each.body9236: + 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.6358, i64 20, i64 0 }, ptr %a168 + 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.6359, i64 62, i64 0 }, ptr %a173 + 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.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: + %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.cond9235 -each.end9238: + 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.cond9239 -each.cond9239: + 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.body9240, label %each.end9242 -each.body9240: + 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.6363, i64 0, i64 0 }, ptr %a196 + 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 %then9243, label %endif9245 -then9243: + 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.missing9246, label %map.found9247 -map.missing9246: + 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.6364, i64 145, ptr %a207) + call void @finch_map_missing(ptr @.str.6368, i64 145, ptr %a207) unreachable -map.found9247: +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 @@ -83091,41 +83146,41 @@ map.found9247: 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: + 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.cond9248 -find.cond9248: + br label %find.cond9255 +find.cond9255: %t224 = load i64, ptr %a223 %t225 = icmp slt i64 %t224, %t221 - br i1 %t225, label %find.body9249, label %find.end9252 -find.body9249: + br i1 %t225, label %find.body9256, label %find.end9259 +find.body9256: %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 %t224 %t227 = load { ptr, i64, i64 }, ptr %t226 store { ptr, i64, i64 } %t227, ptr %a228 store { ptr, i64, i64 } %t219, ptr %a229 %t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229) %t231 = icmp ne i32 %t230, 0 - br i1 %t231, label %find.hit9250, label %find.next9251 -find.hit9250: + br i1 %t231, label %find.hit9257, label %find.next9258 +find.hit9257: store i64 %t224, ptr %a220 - br label %find.end9252 -find.next9251: + br label %find.end9259 +find.next9258: %t232 = add i64 %t224, 1 store i64 %t232, ptr %a223 - br label %find.cond9248 -find.end9252: + 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 %then9253, label %endif9255 -then9253: + 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 @@ -83150,46 +83205,46 @@ then9253: %t252 = load i64, ptr %t251 %t253 = sub i64 %t252, 1 store i64 %t253, ptr %a234 - br label %endif9255 -endif9255: + 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 %range9256, label %inrange9257 -range9256: - call void @finch_panic_index(ptr @.str.6365, i64 153, i64 %t254, i64 %t256) + br i1 %t257, label %range9263, label %inrange9264 +range9263: + call void @finch_panic_index(ptr @.str.6369, i64 153, i64 %t254, i64 %t256) unreachable -inrange9257: +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.step9241 -each.step9241: + br label %each.step9248 +each.step9248: %t261 = load i64, ptr %a187 %t262 = add i64 %t261, 1 store i64 %t262, ptr %a187 - br label %each.cond9239 -each.end9242: + 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.cond9258 -for.cond9258: + br label %for.cond9265 +for.cond9265: %t266 = load i64, ptr %a265 %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body9259, label %for.end9261 -for.body9259: + 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 %range9262, label %inrange9263 -range9262: - call void @finch_panic_index(ptr @.str.6366, i64 156, i64 %t268, i64 %t270) + br i1 %t271, label %range9269, label %inrange9270 +range9269: + call void @finch_panic_index(ptr @.str.6370, i64 156, i64 %t268, i64 %t270) unreachable -inrange9263: +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 @@ -83202,26 +83257,26 @@ inrange9263: %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: + br label %for.cond9271 +for.cond9271: %t284 = load i64, ptr %a283 %t285 = icmp slt i64 %t284, %t282 - br i1 %t285, label %for.body9265, label %for.end9267 -for.body9265: + 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 %then9268, label %endif9270 -then9268: + 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 %range9271, label %inrange9272 -range9271: - call void @finch_panic_index(ptr @.str.6367, i64 160, i64 %t289, i64 %t291) + br i1 %t292, label %range9278, label %inrange9279 +range9278: + call void @finch_panic_index(ptr @.str.6371, i64 160, i64 %t289, i64 %t291) unreachable -inrange9272: +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 @@ -83235,28 +83290,28 @@ inrange9272: %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: + 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.cond9264 -for.end9267: + br label %for.cond9271 +for.end9274: %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 + 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 %then9273, label %endif9275 -then9273: + 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.6369, i64 5, i64 0 }, ptr %a316 + 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 @@ -83269,30 +83324,30 @@ then9273: 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 + 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 %endif9275 -endif9275: + 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 %range9276, label %inrange9277 -range9276: - call void @finch_panic_index(ptr @.str.6371, i64 167, i64 %t331, i64 %t333) + br i1 %t334, label %range9283, label %inrange9284 +range9283: + call void @finch_panic_index(ptr @.str.6375, i64 167, i64 %t331, i64 %t333) unreachable -inrange9277: +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 %then9278, label %endif9280 -then9278: + br i1 %t339, label %then9285, label %endif9287 +then9285: %t340 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.6372, i64 25, i64 0 }, ptr %a342 + 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 @@ -83300,27 +83355,27 @@ then9278: %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 + %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 %then9281, label %endif9283 -then9281: - store { ptr, i64, i64 } { ptr @.str.6377, i64 5, i64 0 }, ptr %a352 - br label %endif9283 -endif9283: + 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.6378, i64 7, i64 0 }, ptr %a358 + 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.6379, i64 1, i64 0 }, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.6383, i64 1, i64 0 }, ptr %a363 call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) %t364 = load { ptr, i64, i64 }, ptr %a361 %t365 = load { ptr, i64, i64 }, ptr %a352 @@ -83329,18 +83384,18 @@ endif9283: 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 + 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 %range9284, label %inrange9285 -range9284: - call void @finch_panic_index(ptr @.str.6381, i64 175, i64 %t374, i64 %t376) + br i1 %t377, label %range9291, label %inrange9292 +range9291: + call void @finch_panic_index(ptr @.str.6385, i64 175, i64 %t374, i64 %t376) unreachable -inrange9285: +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 @@ -83349,79 +83404,79 @@ inrange9285: 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 + 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.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 + %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.6386, i64 74, i64 0 }, 0 + %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.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 + %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.6390, i64 66, i64 0 }, 0 + %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.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 + %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.6394, i64 0, i64 0 }, 0 + %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.6395, ptr %t412 - %t415 = call i32 (ptr, ...) @printf(ptr @.str.6396, i32 %t411, ptr %t414) - %t416 = call i32 (ptr, ...) @printf(ptr @.str.6397) + %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 %range9286, label %inrange9287 -range9286: - call void @finch_panic_index(ptr @.str.6399, i64 179, i64 %t417, i64 %t419) + br i1 %t420, label %range9293, label %inrange9294 +range9293: + call void @finch_panic_index(ptr @.str.6403, i64 179, i64 %t417, i64 %t419) unreachable -inrange9287: +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.6398, i64 12, i64 0 }, ptr %a426 + 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.6400, i64 1, i64 0 }, ptr %a431 + 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.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 + %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.6404, i64 0, i64 0 }, 0 + %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.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: + %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.cond9258 -for.end9261: + br label %for.cond9265 +for.end9268: ret i64 1 } @@ -83560,17 +83615,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.failed9295, label %try.ok9296 +try.failed9295: %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.ok9296: store { ptr, i64, i64 } %t11, ptr %a13 %t14 = call { ptr, i64, i64 } @finch.linker.cacheDir() store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6408, i64 4, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6412, 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 @@ -83586,7 +83641,7 @@ try.ok9289: 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 + 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) @@ -83595,7 +83650,7 @@ try.ok9289: 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 + 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 @@ -83603,8 +83658,8 @@ try.ok9289: 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: + br i1 %t50, label %then9297, label %endif9299 +then9297: %t51 = load { ptr, i64, i64 }, ptr %a46 store { ptr, i64, i64 } %t51, ptr %a52 call void @finch_str_copy(ptr %a53, ptr %a52) @@ -83612,10 +83667,10 @@ then9290: %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: +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.6411, i64 9, i64 0 }, ptr %a60 + 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 @@ -83624,7 +83679,7 @@ endif9292: %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 + 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() @@ -83636,23 +83691,23 @@ endif9292: 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 + 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 %then9293, label %endif9295 -then9293: - store { ptr, i64, i64 } { ptr @.str.6414, i64 0, i64 0 }, ptr %a80 - br label %endif9295 -endif9295: + 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.6415, i64 4, i64 0 }, ptr %a86 + 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.6416, i64 4, i64 0 }, ptr %a92 + 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 @@ -83661,7 +83716,7 @@ endif9295: 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 + 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 %t103 = load { ptr, i64, i64 }, ptr %a1 @@ -83671,7 +83726,7 @@ endif9295: 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 + 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 @@ -83681,7 +83736,7 @@ endif9295: 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 + 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 @@ -83691,7 +83746,7 @@ endif9295: 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 + 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 @@ -83700,8 +83755,8 @@ endif9295: store i64 %t135, ptr %a136 %t137 = load i64, ptr %a136 %t138 = icmp ne i64 %t137, 0 - br i1 %t138, label %then9296, label %endif9298 -then9296: + 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 @@ -83710,25 +83765,25 @@ then9296: %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: + br i1 %t144, label %or.failed9306, label %or.ok9307 +or.failed9306: 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 ] + 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.6422, i64 6, i64 0 }, ptr %a153 + 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.6423, i64 1, i64 0 }, ptr %a158 + 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 @@ -83742,7 +83797,7 @@ or.end9302: %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 + 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 @@ -83751,20 +83806,20 @@ or.end9302: 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 + 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 -endif9298: +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.6426, i64 6, i64 0 }, ptr %a187 + 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.6427, i64 7, i64 0 }, ptr %a192 + 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 @@ -83774,7 +83829,7 @@ endif9298: 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 + 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 @@ -84062,9 +84117,9 @@ entry: store %S.linker.Build %p0, ptr %a1 store %S.platform.Target %p1, ptr %a2 store %S.cimport.CImports %p2, ptr %a3 - %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.6429, i64 11, i64 0 }, 0 + %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.6433, 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.6434, 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) @@ -84076,11 +84131,11 @@ entry: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = icmp eq i64 %t15, 0 - br i1 %t16, label %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 %then9310, label %endif9312 +then9310: + store { ptr, i64, i64 } { ptr @.str.6435, i64 5, i64 0 }, ptr %a13 + br label %endif9312 +endif9312: %t17 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t17, ptr %a18 call void @finch_str_copy(ptr %a19, ptr %a18) @@ -84088,30 +84143,30 @@ endif9305: 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: + 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 %endif9308 -else9307: - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.6432, i64 8, i64 0 }, 0 + 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.6433, ptr %t29 + %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 %then9309, label %endif9311 -then9309: - %t37 = extractvalue { ptr, i64, i64 } { ptr @.str.6434, i64 8, i64 0 }, 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.6435, ptr %t37 + %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) @@ -84120,10 +84175,10 @@ then9309: 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: + 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 @@ -84133,31 +84188,31 @@ endif9308: %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: + 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.6436, ptr %t59 - %t62 = call i32 (ptr, ...) @printf(ptr @.str.6437, i32 %t58, ptr %t61) - %t63 = call i32 (ptr, ...) @printf(ptr @.str.6438) + %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) ret i64 1 -or.ok9313: +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.6439, i64 3, i64 0 }, ptr %a69 + 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.6440, i64 2, i64 0 }, ptr %a76 + 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 @@ -84168,24 +84223,24 @@ or.ok9313: 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 + 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 %then9314, label %endif9316 -then9314: + 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.6442, i64 10, i64 0 }, ptr %a92 + 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 %endif9316 -endif9316: + br label %endif9323 +endif9323: %t95 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 %t96 = load { ptr, i64, i64 }, ptr %t95 store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.6443, i64 4, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6447, i64 4, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a101 @@ -84196,7 +84251,7 @@ endif9316: 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 + 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 @@ -84212,7 +84267,7 @@ endif9316: 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 + 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 @@ -84222,7 +84277,7 @@ endif9316: 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 + 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 @@ -84232,7 +84287,7 @@ endif9316: 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 + 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 @@ -84242,7 +84297,7 @@ endif9316: 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 + 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 @@ -84251,7 +84306,7 @@ endif9316: 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 } { 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 @@ -84260,8 +84315,8 @@ endif9316: %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: + 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 @@ -84270,38 +84325,38 @@ then9317: %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: + br i1 %t178, label %or.failed9327, label %or.ok9328 +or.failed9327: 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 ] + 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.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 + %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.6454, i64 46, i64 0 }, 0 + %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.6455, ptr %t192 - %t195 = call i32 (ptr, ...) @printf(ptr @.str.6456, i32 %t191, ptr %t194) - %t196 = call i32 (ptr, ...) @printf(ptr @.str.6457) + %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.6458, i64 6, i64 0 }, ptr %a200 + 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.6459, i64 1, i64 0 }, ptr %a205 + 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 @@ -84314,10 +84369,10 @@ or.end9323: call void @finch_str_copy(ptr %a213, ptr %a214) %t215 = call i64 @finch_shell(ptr %a213) ret i64 1 -endif9319: +endif9326: %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 + 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 @@ -84327,7 +84382,7 @@ endif9319: 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 + 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 @@ -84337,7 +84392,7 @@ endif9319: 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 + 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 @@ -84351,68 +84406,68 @@ endif9319: %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: + 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.6463, i64 4, i64 0 }, ptr %a255 + 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 %endif9326 -endif9326: + 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 %then9327, label %endif9329 -then9327: + 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 %then9330, label %else9331 -then9330: + 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.6464, i64 12, i64 0 }, ptr %a264 + 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 %endif9332 -else9331: + br label %endif9339 +else9338: %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 + 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 %endif9332 -endif9332: - br label %endif9329 -endif9329: + 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.cond9333 -each.cond9333: + 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.body9334, label %each.end9336 -each.body9334: + 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.6467, i64 2, i64 0 }, ptr %a285 + 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 %then9337, label %else9338 -then9337: + 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.6468, i64 1, i64 0 }, ptr %a292 + 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 @@ -84424,21 +84479,21 @@ then9337: 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 + 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.6470, i64 6, i64 0 }, ptr %a307 + 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 %then9340, label %endif9342 -then9340: - store { ptr, i64, i64 } { ptr @.str.6471, i64 0, i64 0 }, ptr %a307 - br label %endif9342 -endif9342: + 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.6472, i64 4, i64 0 }, ptr %a313 + 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 @@ -84447,7 +84502,7 @@ endif9342: 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 + store { ptr, i64, i64 } { ptr @.str.6477, i64 4, i64 0 }, ptr %a322 call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) %t323 = load { ptr, i64, i64 }, ptr %a320 %t324 = load { ptr, i64, i64 }, ptr %a281 @@ -84457,7 +84512,7 @@ endif9342: 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 + 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 @@ -84467,7 +84522,7 @@ endif9342: 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 + 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 @@ -84477,7 +84532,7 @@ endif9342: 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 + 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 @@ -84486,8 +84541,8 @@ endif9342: store i64 %t356, ptr %a357 %t358 = load i64, ptr %a357 %t359 = icmp ne i64 %t358, 0 - br i1 %t359, label %then9343, label %endif9345 -then9343: + 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 @@ -84496,18 +84551,18 @@ then9343: %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: + br i1 %t365, label %or.failed9353, label %or.ok9354 +or.failed9353: 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 ] + 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.6478, i64 24, i64 0 }, ptr %a372 + 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 @@ -84519,17 +84574,17 @@ or.end9349: %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) + %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.6482, i64 6, i64 0 }, ptr %a389 + 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) %t391 = load { ptr, i64, i64 }, ptr %a388 store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.6483, i64 1, i64 0 }, ptr %a394 + 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 @@ -84539,7 +84594,7 @@ or.end9349: 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 + 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 @@ -84552,7 +84607,7 @@ or.end9349: call void @finch_str_copy(ptr %a412, ptr %a413) %t414 = call i64 @finch_shell(ptr %a412) ret i64 1 -endif9345: +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 @@ -84567,7 +84622,7 @@ endif9345: 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 + 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 @@ -84577,32 +84632,32 @@ endif9345: 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: + br label %endif9346 +else9345: %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 + 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.from9350 -logic.from9350: - br i1 %t440, label %logic.end9352, label %logic.rhs9351 -logic.rhs9351: + br label %logic.from9357 +logic.from9357: + br i1 %t440, label %logic.end9359, label %logic.rhs9358 +logic.rhs9358: %t441 = load { ptr, i64, i64 }, ptr %a281 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.6493, 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: + 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.6490, i64 1, i64 0 }, ptr %a451 + 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 @@ -84612,11 +84667,11 @@ then9354: 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: + br label %endif9363 +else9362: %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 + 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 @@ -84627,20 +84682,20 @@ else9355: 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: + 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.cond9333 -each.end9336: + 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.6492, i64 3, i64 0 }, ptr %a476 + 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 @@ -84650,7 +84705,7 @@ each.end9336: 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 + 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 store { ptr, i64, i64 } %t487, ptr %a489 @@ -84665,25 +84720,25 @@ each.end9336: %t497 = icmp eq i32 %t496, 0 %t498 = load { ptr, i64, i64 }, ptr %a495 %t499 = load { ptr, i64, i64 }, ptr %a494 - br i1 %t497, label %or.failed9357, label %or.ok9358 -or.failed9357: + br i1 %t497, label %or.failed9364, label %or.ok9365 +or.failed9364: 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 ] + 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.6495, i64 6, i64 0 }, ptr %a506 + 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.6496, i64 1, i64 0 }, ptr %a511 + 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 @@ -84696,81 +84751,81 @@ or.end9360: 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: + 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.body9362, label %each.end9364 -each.body9362: + 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.6497, i64 6, i64 0 }, ptr %a534 + 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.step9363 -each.step9363: + br label %each.step9370 +each.step9370: %t540 = load i64, ptr %a522 %t541 = add i64 %t540, 1 store i64 %t541, ptr %a522 - br label %each.cond9361 -each.end9364: + br label %each.cond9368 +each.end9371: %t542 = load i64, ptr %a491 %t543 = icmp eq i64 %t542, 127 - br i1 %t543, label %then9365, label %endif9367 -then9365: + br i1 %t543, label %then9372, label %endif9374 +then9372: %t544 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.6498, i64 42, i64 0 }, ptr %a546 + 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.6499, i64 32, i64 0 }, ptr %a551 + 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.6500, ptr %t555 - %t558 = call i32 (ptr, ...) @printf(ptr @.str.6501, i32 %t554, ptr %t557) - %t559 = call i32 (ptr, ...) @printf(ptr @.str.6502) + %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) ret i64 1 -endif9367: +endif9374: %t560 = load i64, ptr %a491 %t561 = icmp ne i64 %t560, 0 - br i1 %t561, label %then9368, label %endif9370 -then9368: + 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 -endif9370: +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 %then9371, label %endif9373 -then9371: + 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.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: + %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: ret i64 0 } @@ -84780,69 +84835,69 @@ 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.from9381 +logic.from9381: + br i1 %t3, label %logic.rhs9382, label %logic.end9383 +logic.rhs9382: %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.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: %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: +endif9387: %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.from9388 +logic.from9388: + br i1 %t12, label %logic.rhs9389, label %logic.end9390 +logic.rhs9389: %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.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: %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: +endif9394: %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.from9395 +logic.from9395: + br i1 %t22, label %logic.rhs9396, label %logic.end9397 +logic.rhs9396: %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.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: %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: +endif9401: ret i64 -1 } @@ -84869,119 +84924,119 @@ 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.6511, 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 %then9402, label %endif9404 +then9402: %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.6512, i64 114) %t18 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t18, ptr %a6 - br label %endif9397 -endif9397: + br label %endif9404 +endif9404: store { ptr, i64, i64 } zeroinitializer, ptr %a19 store i64 0, ptr %a20 - br label %while.cond9398 -while.cond9398: + 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.body9399, label %while.end9400 -while.body9399: + 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 %range9401, label %inrange9402 -range9401: - call void @finch_panic_index(ptr @.str.6509, i64 119, i64 %t25, i64 %t27) + br i1 %t28, label %range9408, label %inrange9409 +range9408: + call void @finch_panic_index(ptr @.str.6513, i64 119, i64 %t25, i64 %t27) unreachable -inrange9402: +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.from9403 -logic.from9403: - br i1 %t32, label %logic.rhs9404, label %logic.end9405 -logic.rhs9404: + 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.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: + 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 %range9410, label %inrange9411 -range9410: - call void @finch_panic_index(ptr @.str.6510, i64 119, i64 %t41, i64 %t43) + br i1 %t44, label %range9417, label %inrange9418 +range9417: + call void @finch_panic_index(ptr @.str.6514, i64 119, i64 %t41, i64 %t43) unreachable -inrange9411: +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.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: + 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 %range9416, label %inrange9417 -range9416: - call void @finch_panic_index(ptr @.str.6511, i64 119, i64 %t52, i64 %t54) + br i1 %t55, label %range9423, label %inrange9424 +range9423: + call void @finch_panic_index(ptr @.str.6515, i64 119, i64 %t52, i64 %t54) unreachable -inrange9417: +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.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: + 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 %range9422, label %inrange9423 -range9422: - call void @finch_panic_index(ptr @.str.6512, i64 120, i64 %t64, i64 %t66) + br i1 %t67, label %range9429, label %inrange9430 +range9429: + call void @finch_panic_index(ptr @.str.6516, i64 120, i64 %t64, i64 %t66) unreachable -inrange9423: +inrange9430: %t68 = extractvalue { ptr, i64, i64 } %t65, 0 %t69 = getelementptr inbounds i8, ptr %t68, i64 %t64 %t70 = load i8, ptr %t69 @@ -84992,11 +85047,11 @@ inrange9423: %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) + br i1 %t77, label %range9431, label %inrange9432 +range9431: + call void @finch_panic_index(ptr @.str.6517, i64 120, i64 %t74, i64 %t76) unreachable -inrange9425: +inrange9432: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds i8, ptr %t78, i64 %t74 %t80 = load i8, ptr %t79 @@ -85013,18 +85068,18 @@ inrange9425: %t88 = load i64, ptr %a20 %t89 = add i64 %t88, 3 store i64 %t89, ptr %a20 - br label %endif9421 -else9420: + 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 %range9426, label %inrange9427 -range9426: - call void @finch_panic_index(ptr @.str.6514, i64 123, i64 %t91, i64 %t93) + br i1 %t94, label %range9433, label %inrange9434 +range9433: + call void @finch_panic_index(ptr @.str.6518, i64 123, i64 %t91, i64 %t93) unreachable -inrange9427: +inrange9434: %t95 = extractvalue { ptr, i64, i64 } %t92, 0 %t96 = getelementptr inbounds i8, ptr %t95, i64 %t91 %t97 = load i8, ptr %t96 @@ -85038,10 +85093,10 @@ inrange9427: %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: + 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 @@ -85074,24 +85129,24 @@ entry: %a93 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6519, 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.6520, 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.cond9435 +each.cond9435: %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.body9436, label %each.end9438 +each.body9436: %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds i8, ptr %t15, i64 %t13 %t17 = load i8, ptr %t16 @@ -85101,79 +85156,79 @@ 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: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend9435 -logic.rend9435: - br label %logic.end9434 -logic.end9434: - %t26 = phi i1 [ false, %logic.from9432 ], [ %t25, %logic.rend9435 ] - br label %logic.from9436 -logic.from9436: - br i1 %t26, label %logic.end9438, label %logic.rhs9437 -logic.rhs9437: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 br label %logic.from9439 logic.from9439: - br i1 %t28, label %logic.rhs9440, label %logic.end9441 + br i1 %t23, label %logic.rhs9440, label %logic.end9441 logic.rhs9440: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 + %t24 = load i8, ptr %a18 + %t25 = icmp ule i8 %t24, 122 br label %logic.rend9442 logic.rend9442: br label %logic.end9441 logic.end9441: - %t31 = phi i1 [ false, %logic.from9439 ], [ %t30, %logic.rend9442 ] - br label %logic.rend9443 -logic.rend9443: - br label %logic.end9438 -logic.end9438: - %t32 = phi i1 [ true, %logic.from9436 ], [ %t31, %logic.rend9443 ] - br label %logic.from9444 -logic.from9444: - br i1 %t32, label %logic.end9446, label %logic.rhs9445 -logic.rhs9445: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from9447 -logic.from9447: - br i1 %t34, label %logic.rhs9448, label %logic.end9449 -logic.rhs9448: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 + %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: + %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: + %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.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.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: + %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: + %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 %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: + 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) @@ -85185,8 +85240,8 @@ then9456: %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: + 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 @@ -85194,17 +85249,17 @@ else9457: %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) + br i1 %t62, label %range9466, label %inrange9467 +range9466: + call void @finch_panic_index(ptr @.str.6524, i64 138, i64 %t59, i64 %t61) unreachable -inrange9460: +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.6519, i64 1, i64 0 }, ptr %a69 + 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 @@ -85213,11 +85268,11 @@ inrange9460: %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) + br i1 %t76, label %range9468, label %inrange9469 +range9468: + call void @finch_panic_index(ptr @.str.6525, i64 138, i64 %t73, i64 %t75) unreachable -inrange9462: +inrange9469: %t77 = extractvalue { ptr, i64, i64 } %t74, 0 %t78 = getelementptr inbounds i8, ptr %t77, i64 %t73 %t79 = load i8, ptr %t78 @@ -85234,17 +85289,17 @@ inrange9462: %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: + br label %endif9465 +endif9465: + br label %each.step9437 +each.step9437: %t90 = load i64, ptr %a10 %t91 = add i64 %t90, 1 store i64 %t91, ptr %a10 - br label %each.cond9428 -each.end9431: + br label %each.cond9435 +each.end9438: %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 + 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 @@ -85262,80 +85317,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.cond9470 +while.cond9470: %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.body9471, label %while.end9472 +while.body9471: %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 %range9473, label %inrange9474 +range9473: + call void @finch_panic_index(ptr @.str.6527, i64 149, i64 %t8, i64 %t10) unreachable -inrange9467: +inrange9474: %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.from9475 +logic.from9475: + br i1 %t15, label %logic.rhs9476, label %logic.end9477 +logic.rhs9476: %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.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: %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 %range9482, label %inrange9483 +range9482: + call void @finch_panic_index(ptr @.str.6528, i64 150, i64 %t23, i64 %t25) unreachable -inrange9476: +inrange9483: %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 %then9484, label %else9485 +then9484: %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.6529, i64 1, i64 0 }, ptr %t35 store i64 %t33, ptr %t31 - br label %endif9479 -else9478: + br label %endif9486 +else9485: %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 %range9487, label %inrange9488 +range9487: + call void @finch_panic_index(ptr @.str.6530, i64 153, i64 %t38, i64 %t40) unreachable -inrange9481: +inrange9488: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 %t44 = load i8, ptr %t43 @@ -85348,23 +85403,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 %endif9486 +endif9486: %t51 = load i64, ptr %a3 %t52 = add i64 %t51, 2 store i64 %t52, ptr %a3 - br label %endif9474 -else9473: + br label %endif9481 +else9480: %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 %range9489, label %inrange9490 +range9489: + call void @finch_panic_index(ptr @.str.6531, i64 157, i64 %t54, i64 %t56) unreachable -inrange9483: +inrange9490: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 %t60 = load i8, ptr %t59 @@ -85380,12 +85435,12 @@ 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 %endif9481 +endif9481: + br label %while.cond9470 +while.end9472: %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.6532, i64 0, i64 0 }, ptr %a70 call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) %t72 = load { ptr, i64, i64 }, ptr %a71 ret { ptr, i64, i64 } %t72 @@ -85406,37 +85461,37 @@ 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.6534, 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.from9491 +logic.from9491: + br i1 %t11, label %logic.rhs9492, label %logic.end9493 +logic.rhs9492: %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.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: %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 %range9498, label %inrange9499 +range9498: + call void @finch_panic_index(ptr @.str.6535, i64 167, i64 %t18, i64 %t20) unreachable -inrange9492: +inrange9499: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -85444,8 +85499,8 @@ inrange9492: call void @finch_str_copy(ptr %a26, ptr %a25) %t27 = load { ptr, i64, i64 }, ptr %a26 ret { ptr, i64, i64 } %t27 -endif9490: - ret { ptr, i64, i64 } { ptr @.str.6532, i64 0, i64 0 } +endif9497: + ret { ptr, i64, i64 } { ptr @.str.6536, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.lsp.readLine() { @@ -85463,24 +85518,24 @@ entry: %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.cond9500 +while.cond9500: + br label %while.body9501 +while.body9501: %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 %then9503, label %endif9505 +then9503: + ret { ptr, i64, i64 } { ptr @.str.6537, i64 0, i64 0 } +endif9505: %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 %then9506, label %endif9508 +then9506: + br label %while.end9502 +endif9508: %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t9 = load i32, ptr %a3 %t10 = trunc i32 %t9 to i8 @@ -85491,8 +85546,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.cond9500 +while.end9502: %t15 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a16 store { ptr, i64, i64 } %t15, ptr %a17 @@ -85501,21 +85556,21 @@ 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.6539, 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 %then9509, label %endif9511 +then9509: %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.6540, i64 188) %t32 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t32, ptr %a19 - br label %endif9504 -endif9504: + br label %endif9511 +endif9511: %t33 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t33, ptr %a34 call void @finch_str_copy(ptr %a35, ptr %a34) @@ -85544,45 +85599,45 @@ entry: %a57 = alloca { ptr, i64, i64 }, align 16 %a58 = alloca { ptr, i64, i64 }, align 16 store i64 0, ptr %a1 - br label %while.cond9505 -while.cond9505: - br label %while.body9506 -while.body9506: + br label %while.cond9512 +while.cond9512: + br label %while.body9513 +while.body9513: %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 %then9515, label %endif9517 +then9515: %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 %then9518, label %endif9520 +then9518: + br label %while.end9514 +endif9520: %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 %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 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif9516: - br label %while.cond9505 -endif9510: +endif9523: + br label %while.cond9512 +endif9517: %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.6543, 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 %then9524, label %endif9526 +then9524: %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.6544, 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) @@ -85594,39 +85649,39 @@ then9517: %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: + br i1 %t32, label %or.failed9527, label %or.ok9528 +or.failed9527: 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 ] + 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 %endif9519 -endif9519: - br label %while.cond9505 -while.end9507: + 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.cond9524 -for.cond9524: + br label %for.cond9531 +for.cond9531: %t40 = load i64, ptr %a39 %t41 = icmp slt i64 %t40, %t38 - br i1 %t41, label %for.body9525, label %for.end9527 -for.body9525: + 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 %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 + 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 -endif9530: +endif9537: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a37, i32 0, i32 1 %t48 = load i32, ptr %a43 %t49 = trunc i32 %t48 to i8 @@ -85637,13 +85692,13 @@ endif9530: %t53 = getelementptr inbounds i8, ptr %t52, i64 %t50 store i8 %t49, ptr %t53 store i64 %t51, ptr %t47 - br label %for.step9526 -for.step9526: + br label %for.step9533 +for.step9533: %t54 = load i64, ptr %a39 %t55 = add i64 %t54, 1 store i64 %t55, ptr %a39 - br label %for.cond9524 -for.end9527: + 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 @@ -85654,11 +85709,11 @@ for.end9527: %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: + 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.ok9532: +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 @@ -85688,12 +85743,12 @@ 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.6547, 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 + 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 @@ -85707,7 +85762,7 @@ entry: %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 + %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 @@ -85726,12 +85781,12 @@ entry: 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) + %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.6548, i64 2, i64 0 }, %S.json.Json %t6) + 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.6549, i64 6, i64 0 }, %S.json.Json %t7) + 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) ret void @@ -85746,13 +85801,13 @@ entry: 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) + %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.6552, i64 6, i64 0 }, %S.json.Json %t7) + 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.6553, i64 6, i64 0 }, %S.json.Json %t8) + 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) ret void @@ -85777,20 +85832,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.cond9533 -n.cond9533: + br label %n.cond9540 +n.cond9540: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9534, label %n.end9535 -n.body9534: + 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.cond9533 -n.end9535: + br label %n.cond9540 +n.end9542: ret void } @@ -85824,10 +85879,10 @@ entry: 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) + 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.6555, i64 9, i64 0 }, %S.json.Json %t8) + 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 store %S.json.Json %t9, ptr %a10 call void @finch.copy.S_json_Json(ptr %a11, ptr %a10) @@ -85851,11 +85906,11 @@ 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) + 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.6557, i64 3, i64 0 }, %S.json.Json %t11) + 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 store %S.json.Json %t12, ptr %a13 call void @finch.copy.S_json_Json(ptr %a14, ptr %a13) @@ -85873,7 +85928,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.6563, 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 @@ -85895,16 +85950,16 @@ 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.failed9543, label %or.ok9544 +or.failed9543: 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 ] + 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 ] ret i64 %t11 } @@ -85939,19 +85994,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.6565, 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 %then9547, label %endif9549 +then9547: ret %S.lsp.Diag zeroinitializer -endif9542: +endif9549: %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.6566, i64 280) %t14 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load { ptr, i64, i64 }, ptr %a1 @@ -85960,33 +86015,33 @@ 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.6567, 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.6569, 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 %then9550, label %endif9552 +then9550: ret %S.lsp.Diag zeroinitializer -endif9545: +endif9552: %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 %range9553, label %inrange9554 +range9553: + call void @finch_panic_index(ptr @.str.6570, i64 287, i64 %t37, i64 %t39) unreachable -inrange9547: +inrange9554: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t37 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -85998,11 +86053,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 %range9555, label %inrange9556 +range9555: + call void @finch_panic_index(ptr @.str.6571, i64 288, i64 %t48, i64 %t50) unreachable -inrange9549: +inrange9556: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t48 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86013,22 +86068,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.cond9557 +for.cond9557: %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.body9558, label %for.end9560 +for.body9558: %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 %range9561, label %inrange9562 +range9561: + call void @finch_panic_index(ptr @.str.6572, i64 291, i64 %t65, i64 %t67) unreachable -inrange9555: +inrange9562: %t69 = extractvalue { ptr, i64, i64 } %t66, 0 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t65 %t71 = load { ptr, i64, i64 }, ptr %t70 @@ -86042,16 +86097,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.step9559 +for.step9559: %t79 = load i64, ptr %a61 %t80 = add i64 %t79, 1 store i64 %t80, ptr %a61 - br label %for.cond9550 -for.end9553: + br label %for.cond9557 +for.end9560: %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.6573, 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 @@ -86093,20 +86148,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.cond9703 -n.cond9703: + br label %n.cond9710 +n.cond9710: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9704, label %n.end9705 -n.body9704: + 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.cond9703 -n.end9705: + br label %n.cond9710 +n.end9712: ret void } @@ -86139,20 +86194,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.cond9706 -n.cond9706: + br label %n.cond9713 +n.cond9713: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9707, label %n.end9708 -n.body9707: + 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.cond9706 -n.end9708: + br label %n.cond9713 +n.end9715: ret void } @@ -86191,20 +86246,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.cond9709 -n.cond9709: + br label %n.cond9716 +n.cond9716: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9710, label %n.end9711 -n.body9710: + 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.cond9709 -n.end9711: + br label %n.cond9716 +n.end9718: ret void } @@ -86240,20 +86295,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.cond9712 -n.cond9712: + br label %n.cond9719 +n.cond9719: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9713, label %n.end9714 -n.body9713: + 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.cond9712 -n.end9714: + br label %n.cond9719 +n.end9721: ret void } @@ -86286,20 +86341,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.cond9715 -n.cond9715: + br label %n.cond9722 +n.cond9722: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9716, label %n.end9717 -n.body9716: + 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.cond9715 -n.end9717: + br label %n.cond9722 +n.end9724: ret void } @@ -86431,41 +86486,41 @@ entry: 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.6575, 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.cond9563 +each.cond9563: %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.body9564, label %each.end9566 +each.body9564: %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.6577, 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 %then9567, label %else9568 +then9567: %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 %range9570, label %inrange9571 +range9570: + call void @finch_panic_index(ptr @.str.6578, i64 301, i64 0, i64 %t29) unreachable -inrange9564: +inrange9571: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i64 0 %t33 = load { ptr, i64, i64 }, ptr %t32 @@ -86475,33 +86530,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.6579, 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.from9572 +logic.from9572: + br i1 %t42, label %logic.rhs9573, label %logic.end9574 +logic.rhs9573: %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.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: %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 %range9579, label %inrange9580 +range9579: + call void @finch_panic_index(ptr @.str.6580, i64 303, i64 1, i64 %t50) unreachable -inrange9573: +inrange9580: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 1 %t54 = load { ptr, i64, i64 }, ptr %t53 @@ -86512,11 +86567,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 %range9581, label %inrange9582 +range9581: + call void @finch_panic_index(ptr @.str.6581, i64 303, i64 2, i64 %t60) unreachable -inrange9575: +inrange9582: %t62 = extractvalue { ptr, i64, i64 } %t59, 0 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 2 %t64 = load { ptr, i64, i64 }, ptr %t63 @@ -86525,11 +86580,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 %range9583, label %inrange9584 +range9583: + call void @finch_panic_index(ptr @.str.6582, i64 303, i64 3, i64 %t68) unreachable -inrange9577: +inrange9584: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 3 %t72 = load { ptr, i64, i64 }, ptr %t71 @@ -86538,11 +86593,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 %range9585, label %inrange9586 +range9585: + call void @finch_panic_index(ptr @.str.6583, i64 303, i64 4, i64 %t76) unreachable -inrange9579: +inrange9586: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 4 %t80 = load { ptr, i64, i64 }, ptr %t79 @@ -86551,11 +86606,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 %range9587, label %inrange9588 +range9587: + call void @finch_panic_index(ptr @.str.6584, i64 303, i64 5, i64 %t84) unreachable -inrange9581: +inrange9588: %t86 = extractvalue { ptr, i64, i64 } %t83, 0 %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 5 %t88 = load { ptr, i64, i64 }, ptr %t87 @@ -86566,11 +86621,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 %range9589, label %inrange9590 +range9589: + call void @finch_panic_index(ptr @.str.6585, i64 303, i64 6, i64 %t94) unreachable -inrange9583: +inrange9590: %t96 = extractvalue { ptr, i64, i64 } %t93, 0 %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 6 %t98 = load { ptr, i64, i64 }, ptr %t97 @@ -86579,11 +86634,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 %range9591, label %inrange9592 +range9591: + call void @finch_panic_index(ptr @.str.6586, i64 303, i64 7, i64 %t102) unreachable -inrange9585: +inrange9592: %t104 = extractvalue { ptr, i64, i64 } %t101, 0 %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 7 %t106 = load { ptr, i64, i64 }, ptr %t105 @@ -86592,11 +86647,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 %range9593, label %inrange9594 +range9593: + call void @finch_panic_index(ptr @.str.6587, i64 303, i64 8, i64 %t110) unreachable -inrange9587: +inrange9594: %t112 = extractvalue { ptr, i64, i64 } %t109, 0 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 8 %t114 = load { ptr, i64, i64 }, ptr %t113 @@ -86609,37 +86664,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 %endif9578 +else9577: %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.6588, 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.from9595 +logic.from9595: + br i1 %t125, label %logic.rhs9596, label %logic.end9597 +logic.rhs9596: %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.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: %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 %range9602, label %inrange9603 +range9602: + call void @finch_panic_index(ptr @.str.6589, i64 305, i64 1, i64 %t133) unreachable -inrange9596: +inrange9603: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 1 %t137 = load { ptr, i64, i64 }, ptr %t136 @@ -86650,11 +86705,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 %range9604, label %inrange9605 +range9604: + call void @finch_panic_index(ptr @.str.6590, i64 305, i64 2, i64 %t143) unreachable -inrange9598: +inrange9605: %t145 = extractvalue { ptr, i64, i64 } %t142, 0 %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 2 %t147 = load { ptr, i64, i64 }, ptr %t146 @@ -86665,11 +86720,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 %range9606, label %inrange9607 +range9606: + call void @finch_panic_index(ptr @.str.6591, i64 305, i64 3, i64 %t153) unreachable -inrange9600: +inrange9607: %t155 = extractvalue { ptr, i64, i64 } %t152, 0 %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 3 %t157 = load { ptr, i64, i64 }, ptr %t156 @@ -86680,11 +86735,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 %range9608, label %inrange9609 +range9608: + call void @finch_panic_index(ptr @.str.6592, i64 305, i64 4, i64 %t163) unreachable -inrange9602: +inrange9609: %t165 = extractvalue { ptr, i64, i64 } %t162, 0 %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t165, i64 4 %t167 = load { ptr, i64, i64 }, ptr %t166 @@ -86693,11 +86748,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 %range9610, label %inrange9611 +range9610: + call void @finch_panic_index(ptr @.str.6593, i64 305, i64 5, i64 %t171) unreachable -inrange9604: +inrange9611: %t173 = extractvalue { ptr, i64, i64 } %t170, 0 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 5 %t175 = load { ptr, i64, i64 }, ptr %t174 @@ -86706,11 +86761,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 %range9612, label %inrange9613 +range9612: + call void @finch_panic_index(ptr @.str.6594, i64 305, i64 6, i64 %t179) unreachable -inrange9606: +inrange9613: %t181 = extractvalue { ptr, i64, i64 } %t178, 0 %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t181, i64 6 %t183 = load { ptr, i64, i64 }, ptr %t182 @@ -86721,11 +86776,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 %range9614, label %inrange9615 +range9614: + call void @finch_panic_index(ptr @.str.6595, i64 305, i64 7, i64 %t189) unreachable -inrange9608: +inrange9615: %t191 = extractvalue { ptr, i64, i64 } %t188, 0 %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 7 %t193 = load { ptr, i64, i64 }, ptr %t192 @@ -86734,11 +86789,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 %range9616, label %inrange9617 +range9616: + call void @finch_panic_index(ptr @.str.6596, i64 305, i64 8, i64 %t197) unreachable -inrange9610: +inrange9617: %t199 = extractvalue { ptr, i64, i64 } %t196, 0 %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 8 %t201 = load { ptr, i64, i64 }, ptr %t200 @@ -86751,37 +86806,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 %endif9601 +else9600: %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.6597, 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.from9618 +logic.from9618: + br i1 %t212, label %logic.rhs9619, label %logic.end9620 +logic.rhs9619: %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.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: %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 %range9625, label %inrange9626 +range9625: + call void @finch_panic_index(ptr @.str.6598, i64 307, i64 1, i64 %t220) unreachable -inrange9619: +inrange9626: %t222 = extractvalue { ptr, i64, i64 } %t219, 0 %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 1 %t224 = load { ptr, i64, i64 }, ptr %t223 @@ -86792,11 +86847,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 %range9627, label %inrange9628 +range9627: + call void @finch_panic_index(ptr @.str.6599, i64 307, i64 2, i64 %t230) unreachable -inrange9621: +inrange9628: %t232 = extractvalue { ptr, i64, i64 } %t229, 0 %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 2 %t234 = load { ptr, i64, i64 }, ptr %t233 @@ -86807,11 +86862,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 %range9629, label %inrange9630 +range9629: + call void @finch_panic_index(ptr @.str.6600, i64 307, i64 3, i64 %t240) unreachable -inrange9623: +inrange9630: %t242 = extractvalue { ptr, i64, i64 } %t239, 0 %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 3 %t244 = load { ptr, i64, i64 }, ptr %t243 @@ -86822,11 +86877,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 %range9631, label %inrange9632 +range9631: + call void @finch_panic_index(ptr @.str.6601, i64 307, i64 4, i64 %t250) unreachable -inrange9625: +inrange9632: %t252 = extractvalue { ptr, i64, i64 } %t249, 0 %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i64 4 %t254 = load { ptr, i64, i64 }, ptr %t253 @@ -86837,11 +86892,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 %range9633, label %inrange9634 +range9633: + call void @finch_panic_index(ptr @.str.6602, i64 307, i64 5, i64 %t260) unreachable -inrange9627: +inrange9634: %t262 = extractvalue { ptr, i64, i64 } %t259, 0 %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 5 %t264 = load { ptr, i64, i64 }, ptr %t263 @@ -86850,11 +86905,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 %range9635, label %inrange9636 +range9635: + call void @finch_panic_index(ptr @.str.6603, i64 307, i64 6, i64 %t268) unreachable -inrange9629: +inrange9636: %t270 = extractvalue { ptr, i64, i64 } %t267, 0 %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i64 6 %t272 = load { ptr, i64, i64 }, ptr %t271 @@ -86863,11 +86918,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 %range9637, label %inrange9638 +range9637: + call void @finch_panic_index(ptr @.str.6604, i64 307, i64 7, i64 %t276) unreachable -inrange9631: +inrange9638: %t278 = extractvalue { ptr, i64, i64 } %t275, 0 %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 7 %t280 = load { ptr, i64, i64 }, ptr %t279 @@ -86876,11 +86931,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 %range9639, label %inrange9640 +range9639: + call void @finch_panic_index(ptr @.str.6605, i64 307, i64 8, i64 %t284) unreachable -inrange9633: +inrange9640: %t286 = extractvalue { ptr, i64, i64 } %t283, 0 %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 8 %t288 = load { ptr, i64, i64 }, ptr %t287 @@ -86889,16 +86944,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 %range9641, label %inrange9642 +range9641: + call void @finch_panic_index(ptr @.str.6606, i64 307, i64 9, i64 %t292) unreachable -inrange9635: +inrange9642: %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.6608, 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 @@ -86909,37 +86964,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 %endif9624 +else9623: %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.6609, 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.from9643 +logic.from9643: + br i1 %t311, label %logic.rhs9644, label %logic.end9645 +logic.rhs9644: %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.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: %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 %range9650, label %inrange9651 +range9650: + call void @finch_panic_index(ptr @.str.6610, i64 309, i64 1, i64 %t319) unreachable -inrange9644: +inrange9651: %t321 = extractvalue { ptr, i64, i64 } %t318, 0 %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i64 1 %t323 = load { ptr, i64, i64 }, ptr %t322 @@ -86950,11 +87005,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 %range9652, label %inrange9653 +range9652: + call void @finch_panic_index(ptr @.str.6611, i64 309, i64 2, i64 %t329) unreachable -inrange9646: +inrange9653: %t331 = extractvalue { ptr, i64, i64 } %t328, 0 %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i64 2 %t333 = load { ptr, i64, i64 }, ptr %t332 @@ -86965,11 +87020,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 %range9654, label %inrange9655 +range9654: + call void @finch_panic_index(ptr @.str.6612, i64 309, i64 3, i64 %t339) unreachable -inrange9648: +inrange9655: %t341 = extractvalue { ptr, i64, i64 } %t338, 0 %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 3 %t343 = load { ptr, i64, i64 }, ptr %t342 @@ -86980,11 +87035,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 %range9656, label %inrange9657 +range9656: + call void @finch_panic_index(ptr @.str.6613, i64 309, i64 4, i64 %t349) unreachable -inrange9650: +inrange9657: %t351 = extractvalue { ptr, i64, i64 } %t348, 0 %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i64 4 %t353 = load { ptr, i64, i64 }, ptr %t352 @@ -86993,11 +87048,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 %range9658, label %inrange9659 +range9658: + call void @finch_panic_index(ptr @.str.6614, i64 309, i64 5, i64 %t357) unreachable -inrange9652: +inrange9659: %t359 = extractvalue { ptr, i64, i64 } %t356, 0 %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 5 %t361 = load { ptr, i64, i64 }, ptr %t360 @@ -87010,40 +87065,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 %endif9649 +else9648: %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.6615, 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.from9660 +logic.from9660: + br i1 %t372, label %logic.rhs9661, label %logic.end9662 +logic.rhs9661: %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.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: %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.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: %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 @@ -87054,11 +87109,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 %range9671, label %inrange9672 +range9671: + call void @finch_panic_index(ptr @.str.6616, i64 312, i64 %t388, i64 %t390) unreachable -inrange9665: +inrange9672: %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 @@ -87066,11 +87121,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 %range9673, label %inrange9674 +range9673: + call void @finch_panic_index(ptr @.str.6617, i64 312, i64 3, i64 %t397) unreachable -inrange9667: +inrange9674: %t399 = extractvalue { ptr, i64, i64 } %t396, 0 %t400 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 3 %t401 = load { ptr, i64, i64 }, ptr %t400 @@ -87089,11 +87144,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 %range9675, label %inrange9676 +range9675: + call void @finch_panic_index(ptr @.str.6618, i64 313, i64 %t410, i64 %t412) unreachable -inrange9669: +inrange9676: %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 @@ -87101,11 +87156,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 %range9677, label %inrange9678 +range9677: + call void @finch_panic_index(ptr @.str.6619, i64 313, i64 4, i64 %t419) unreachable -inrange9671: +inrange9678: %t421 = extractvalue { ptr, i64, i64 } %t418, 0 %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 4 %t423 = load { ptr, i64, i64 }, ptr %t422 @@ -87119,37 +87174,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 %endif9670 +else9669: %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.6620, 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.from9679 +logic.from9679: + br i1 %t435, label %logic.rhs9680, label %logic.end9681 +logic.rhs9680: %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.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: %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 %range9686, label %inrange9687 +range9686: + call void @finch_panic_index(ptr @.str.6621, i64 315, i64 1, i64 %t443) unreachable -inrange9680: +inrange9687: %t445 = extractvalue { ptr, i64, i64 } %t442, 0 %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i64 1 %t447 = load { ptr, i64, i64 }, ptr %t446 @@ -87160,11 +87215,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 %range9688, label %inrange9689 +range9688: + call void @finch_panic_index(ptr @.str.6622, i64 315, i64 2, i64 %t453) unreachable -inrange9682: +inrange9689: %t455 = extractvalue { ptr, i64, i64 } %t452, 0 %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 2 %t457 = load { ptr, i64, i64 }, ptr %t456 @@ -87175,11 +87230,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 %range9690, label %inrange9691 +range9690: + call void @finch_panic_index(ptr @.str.6623, i64 315, i64 3, i64 %t463) unreachable -inrange9684: +inrange9691: %t465 = extractvalue { ptr, i64, i64 } %t462, 0 %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 3 %t467 = load { ptr, i64, i64 }, ptr %t466 @@ -87190,11 +87245,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 %range9692, label %inrange9693 +range9692: + call void @finch_panic_index(ptr @.str.6624, i64 315, i64 4, i64 %t473) unreachable -inrange9686: +inrange9693: %t475 = extractvalue { ptr, i64, i64 } %t472, 0 %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 4 %t477 = load { ptr, i64, i64 }, ptr %t476 @@ -87203,11 +87258,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 %range9694, label %inrange9695 +range9694: + call void @finch_panic_index(ptr @.str.6625, i64 315, i64 5, i64 %t481) unreachable -inrange9688: +inrange9695: %t483 = extractvalue { ptr, i64, i64 } %t480, 0 %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 5 %t485 = load { ptr, i64, i64 }, ptr %t484 @@ -87216,16 +87271,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 %range9696, label %inrange9697 +range9696: + call void @finch_panic_index(ptr @.str.6626, i64 315, i64 6, i64 %t489) unreachable -inrange9690: +inrange9697: %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.6628, 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 @@ -87236,37 +87291,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 %endif9685 +else9684: %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.6629, 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.from9698 +logic.from9698: + br i1 %t508, label %logic.rhs9699, label %logic.end9700 +logic.rhs9699: %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.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: %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 %range9705, label %inrange9706 +range9705: + call void @finch_panic_index(ptr @.str.6630, i64 317, i64 1, i64 %t516) unreachable -inrange9699: +inrange9706: %t518 = extractvalue { ptr, i64, i64 } %t515, 0 %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 1 %t520 = load { ptr, i64, i64 }, ptr %t519 @@ -87280,43 +87335,43 @@ 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 %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: %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 %then9707, label %endif9709 +then9707: %t532 = load { ptr, i64, i64 }, ptr %a18 %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 store %S.lsp.Diag %t533, ptr %t534 - br label %endif9702 -endif9702: - br label %endif9562 -endif9562: - br label %each.step9558 -each.step9558: + 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.cond9556 -each.end9559: + 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) @@ -87437,18 +87492,18 @@ entry: 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 } { 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.6628, i64 1, i64 0 }, ptr %a10 + 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.6629, i64 0, i64 0 }, ptr %a15 + 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 @@ -87460,44 +87515,44 @@ entry: %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: + br label %n.cond9725 +n.cond9725: %t26 = load i64, ptr %a25 %t27 = icmp slt i64 %t26, %t24 - br i1 %t27, label %n.body9719, label %n.end9720 -n.body9719: + 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.live9721, label %entry.next9722 -entry.live9721: + 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.next9722 -entry.next9722: + br label %entry.next9729 +entry.next9729: %t38 = load i64, ptr %a25 %t39 = add i64 %t38, 1 store i64 %t39, ptr %a25 - br label %n.cond9718 -n.end9720: + 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.cond9723 -each.cond9723: + 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.body9724, label %each.end9726 -each.body9724: + 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 @@ -87505,7 +87560,7 @@ each.body9724: %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 + 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 @@ -87516,7 +87571,7 @@ each.body9724: 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 + 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 @@ -87527,14 +87582,14 @@ each.body9724: 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: + 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.6632, i64 333, ptr %a76) + call void @finch_map_missing(ptr @.str.6636, i64 333, ptr %a76) unreachable -map.found9728: +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 @@ -87545,7 +87600,7 @@ map.found9728: %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 + 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 @@ -87554,7 +87609,7 @@ map.found9728: 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 + store { ptr, i64, i64 } { ptr @.str.6638, i64 1, i64 0 }, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 %t100 = load { ptr, i64, i64 }, ptr %a68 @@ -87563,35 +87618,35 @@ map.found9728: 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 + 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.step9725 -each.step9725: + br label %each.step9732 +each.step9732: %t111 = load i64, ptr %a42 %t112 = add i64 %t111, 1 store i64 %t112, ptr %a42 - br label %each.cond9723 -each.end9726: + 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.6636, i64 8, i64 0 }, ptr %a117 + 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.6637, i64 1, i64 0 }, ptr %a123 + 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.6638, i64 9, i64 0 }, ptr %a128 + 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 @@ -87600,7 +87655,7 @@ each.end9726: 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 + 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 @@ -87609,7 +87664,7 @@ each.end9726: 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 } { ptr @.str.6644, i64 4, i64 0 }, ptr %a146 call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) %t147 = load { ptr, i64, i64 }, ptr %a144 %t148 = load { ptr, i64, i64 }, ptr %a119 @@ -87618,7 +87673,7 @@ each.end9726: 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 + 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 @@ -87632,24 +87687,24 @@ each.end9726: %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: + br i1 %t165, label %or.failed9736, label %or.ok9737 +or.failed9736: 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 ] + 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 %then9733, label %else9734 -then9733: + 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 @@ -87661,41 +87716,41 @@ then9733: %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: + 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.have9737 -map.have9737: + 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 %endif9735 -else9734: + br label %endif9742 +else9741: %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 %then9745, label %endif9747 +then9745: %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.missing9748, label %map.found9749 +map.missing9748: 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.6647, i64 344, ptr %a203) unreachable -map.found9742: +map.found9749: %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 @@ -87737,8 +87792,8 @@ map.found9742: %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: + 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 @@ -87746,12 +87801,12 @@ then9743: 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: + 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 @@ -87763,14 +87818,14 @@ endif9735: %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: + 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.have9747 -map.have9747: + 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) @@ -87827,14 +87882,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.cond9755 +each.cond9755: %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.body9756, label %each.end9758 +each.body9756: %t20 = load ptr, ptr %t14 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 %t22 = load { ptr, i64, i64 }, ptr %t21 @@ -87845,32 +87900,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.cond9759 +find.cond9759: %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.body9760, label %find.end9763 +find.body9760: %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.hit9761, label %find.next9762 +find.hit9761: store i64 %t30, ptr %a26 - br label %find.end9756 -find.next9755: + br label %find.end9763 +find.next9762: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond9752 -find.end9756: + br label %find.cond9759 +find.end9763: %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 %then9764, label %endif9766 +then9764: %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 @@ -87883,25 +87938,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 %endif9766 +endif9766: + br label %each.step9757 +each.step9757: %t51 = load i64, ptr %a15 %t52 = add i64 %t51, 1 store i64 %t52, ptr %a15 - br label %each.cond9748 -each.end9751: + br label %each.cond9755 +each.end9758: store { ptr, i64, i64 } zeroinitializer, ptr %a53 store i64 0, ptr %a54 - br label %each.cond9760 -each.cond9760: + br label %each.cond9767 +each.cond9767: %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.body9768, label %each.end9770 +each.body9768: %t59 = load ptr, ptr %a13 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 %t57 %t61 = load { ptr, i64, i64 }, ptr %t60 @@ -87911,10 +87966,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.from9771 +logic.from9771: + br i1 %t67, label %logic.rhs9772, label %logic.end9773 +logic.rhs9772: %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 @@ -87923,13 +87978,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.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: %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 @@ -87937,11 +87992,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 %then9778, label %endif9780 +then9778: store i64 0, ptr %a81 - br label %endif9773 -endif9773: + br label %endif9780 +endif9780: %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 @@ -87949,11 +88004,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 %then9781, label %endif9783 +then9781: store i64 0, ptr %a88 - br label %endif9776 -endif9776: + br label %endif9783 +endif9783: %t91 = call %S.json.Json @finch.json.new_object() store %S.json.Json %t91, ptr %a92 %t93 = load i64, ptr %a81 @@ -87961,16 +88016,16 @@ 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) + 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.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) + 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.6648, i64 7, i64 0 }, %S.json.Json %t103) + 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 @@ -87985,25 +88040,25 @@ endif9776: %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: + 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.6649, i64 3, i64 0 }, %S.json.Json %t118) + 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.6650, i64 11, i64 0 }, %S.json.Json %t119) + 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.6651, i64 31, i64 0 }, %S.json.Json %t120) - br label %each.step9762 -each.step9762: + 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.cond9760 -each.end9763: + 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 @@ -88033,22 +88088,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.cond9784 +for.cond9784: %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.body9785, label %for.end9787 +for.body9785: %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 %range9788, label %inrange9789 +range9788: + call void @finch_panic_index(ptr @.str.6656, i64 397, i64 %t12, i64 %t14) unreachable -inrange9782: +inrange9789: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.lsp.Ref, ptr %t16, i64 %t12 %t18 = load %S.lsp.Ref, ptr %t17 @@ -88060,23 +88115,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.from9790 +logic.from9790: + br i1 %t26, label %logic.rhs9791, label %logic.end9792 +logic.rhs9791: %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.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: %t32 = load i64, ptr %a4 %t33 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 %t34 = load i64, ptr %t33 @@ -88084,15 +88139,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.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: %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 @@ -88100,23 +88155,23 @@ 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.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: %t48 = load i64, ptr %a8 ret i64 %t48 -endif9797: - br label %for.step9779 -for.step9779: +endif9804: + br label %for.step9786 +for.step9786: %t49 = load i64, ptr %a8 %t50 = add i64 %t49, 1 store i64 %t50, ptr %a8 - br label %for.cond9777 -for.end9780: + br label %for.cond9784 +for.end9787: ret i64 -1 } @@ -88143,35 +88198,35 @@ 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 %then9805, label %endif9807 +then9805: %t13 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t13 -endif9800: +endif9807: %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) + %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 %range9801, label %inrange9802 -range9801: - call void @finch_panic_index(ptr @.str.6656, i64 412, i64 %t18, i64 %t20) + br i1 %t21, label %range9808, label %inrange9809 +range9808: + call void @finch_panic_index(ptr @.str.6660, i64 412, i64 %t18, i64 %t20) unreachable -inrange9802: +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.6655, i64 5, i64 0 }, %S.json.Json %t26) + 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() 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) + 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) @@ -88204,46 +88259,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.from9810 +logic.from9810: + br i1 %t12, label %logic.end9812, label %logic.rhs9811 +logic.rhs9811: %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 %range9813, label %inrange9814 +range9813: + call void @finch_panic_index(ptr @.str.6662, i64 420, i64 %t14, i64 %t16) unreachable -inrange9807: +inrange9814: %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.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: %t25 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t25 -endif9811: +endif9818: %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 %range9819, label %inrange9820 +range9819: + call void @finch_panic_index(ptr @.str.6663, i64 423, i64 %t27, i64 %t29) unreachable -inrange9813: +inrange9820: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds %S.lsp.Ref, ptr %t31, i64 %t27 %t33 = load %S.lsp.Ref, ptr %t32 @@ -88257,7 +88312,7 @@ 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) + 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 @@ -88268,7 +88323,7 @@ inrange9813: %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) + 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) @@ -88311,14 +88366,14 @@ entry: 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.cond9821 +each.cond9821: %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.body9822, label %each.end9824 +each.body9822: %t11 = load ptr, ptr %t5 %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %t11, i64 %t9 %t13 = load %S.lsp.FnRec, ptr %t12 @@ -88330,10 +88385,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 %then9825, label %endif9827 +then9825: + br label %each.step9823 +endif9827: store i64 12, ptr %a22 %t23 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -88345,13 +88400,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 %then9828, label %endif9830 +then9828: 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.6666, 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 @@ -88361,8 +88416,8 @@ then9821: 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: + 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 @@ -88373,23 +88428,23 @@ endif9823: %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: + br label %each.step9823 +each.step9823: %t54 = load i64, ptr %a6 %t55 = add i64 %t54, 1 store i64 %t55, ptr %a6 - br label %each.cond9814 -each.end9817: + 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.cond9824 -each.cond9824: + 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.body9825, label %each.end9827 -each.body9825: + 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 @@ -88401,8 +88456,8 @@ each.body9825: 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: + 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 @@ -88418,25 +88473,25 @@ then9828: %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: + 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.cond9824 -each.end9827: + 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.cond9831 -each.cond9831: + 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.body9832, label %each.end9834 -each.body9832: + 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 @@ -88448,8 +88503,8 @@ each.body9832: 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: + 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 @@ -88465,15 +88520,15 @@ then9835: %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: + 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.cond9831 -each.end9834: + 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) @@ -88501,21 +88556,21 @@ 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) + 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.6664, i64 4, i64 0 }, %S.json.Json %t11) + 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() 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) + 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 %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) + 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.6667, i64 5, i64 0 }, %S.json.Json %t19) + 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 @@ -88523,7 +88578,7 @@ entry: %t24 = load i64, ptr %a4 %t25 = sub i64 %t24, 1 %t26 = call %S.json.Json @finch.lsp.range(i64 %t21, i64 %t23, i64 %t25) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6668, i64 14, i64 0 }, %S.json.Json %t26) + 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) @@ -88549,36 +88604,36 @@ 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) + 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.6670, i64 4, i64 0 }, %S.json.Json %t10) + 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 %then9838, label %endif9840 -then9838: + 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.6671, i64 6, i64 0 }, %S.json.Json %t15) - br label %endif9840 -endif9840: + 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 %then9841, label %endif9843 -then9841: + 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.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) + %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.6674, i64 5, i64 0 }, %S.json.Json %t23) + 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.6675, i64 13, i64 0 }, %S.json.Json %t24) - br label %endif9843 -endif9843: + 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) @@ -88592,72 +88647,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: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend9847 -logic.rend9847: - br label %logic.end9846 -logic.end9846: - %t6 = phi i1 [ false, %logic.from9844 ], [ %t5, %logic.rend9847 ] - br label %logic.from9848 -logic.from9848: - br i1 %t6, label %logic.end9850, label %logic.rhs9849 -logic.rhs9849: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 br label %logic.from9851 logic.from9851: - br i1 %t8, label %logic.rhs9852, label %logic.end9853 + br i1 %t3, label %logic.rhs9852, label %logic.end9853 logic.rhs9852: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 122 br label %logic.rend9854 logic.rend9854: br label %logic.end9853 logic.end9853: - %t11 = phi i1 [ false, %logic.from9851 ], [ %t10, %logic.rend9854 ] - br label %logic.rend9855 -logic.rend9855: - br label %logic.end9850 -logic.end9850: - %t12 = phi i1 [ true, %logic.from9848 ], [ %t11, %logic.rend9855 ] - br label %logic.from9856 -logic.from9856: - br i1 %t12, label %logic.end9858, label %logic.rhs9857 -logic.rhs9857: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from9859 -logic.from9859: - br i1 %t14, label %logic.rhs9860, label %logic.end9861 -logic.rhs9860: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 + %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: + %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: + %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.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.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: + %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: + %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: %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.rend9874 +logic.rend9874: + br label %logic.end9873 +logic.end9873: + %t21 = phi i1 [ true, %logic.from9871 ], [ %t20, %logic.rend9874 ] ret i1 %t21 } @@ -88674,14 +88729,14 @@ entry: 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.cond9875 +each.cond9875: %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.body9876, label %each.end9878 +each.body9876: %t8 = load ptr, ptr %a2 %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 %t10 = load %S.docs.Doc, ptr %t9 @@ -88690,21 +88745,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.6681, 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 %then9879, label %endif9881 +then9879: store i64 5, ptr %a12 - br label %endif9874 -endif9874: + br label %endif9881 +endif9881: %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 %panic9882, label %ok9883 +panic9882: + call void @finch_panic(ptr @.str.6682, i64 497, ptr @.str.6683) unreachable -ok9876: +ok9883: %t22 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = load i64, ptr %a12 @@ -88714,13 +88769,13 @@ 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: + br label %each.step9877 +each.step9877: %t30 = load i64, ptr %a3 %t31 = add i64 %t30, 1 store i64 %t31, ptr %a3 - br label %each.cond9868 -each.end9871: + br label %each.cond9875 +each.end9878: ret void } @@ -88748,14 +88803,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.cond9884 +each.cond9884: %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.body9885, label %each.end9887 +each.body9885: %t12 = load ptr, ptr %t6 %t13 = getelementptr inbounds %S.lsp.VarRec, ptr %t12, i64 %t10 %t14 = load %S.lsp.VarRec, ptr %t13 @@ -88767,37 +88822,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.from9888 +logic.from9888: + br i1 %t22, label %logic.rhs9889, label %logic.end9890 +logic.rhs9889: %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.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: %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.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: %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 @@ -88805,27 +88860,27 @@ 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.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: %t42 = load %S.lsp.VarRec, ptr %a15 store %S.lsp.VarRec %t42, ptr %a43 call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) %t45 = load %S.lsp.VarRec, ptr %a44 store %S.lsp.VarRec %t45, ptr %a5 - br label %endif9895 -endif9895: - br label %each.step9879 -each.step9879: + 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.cond9877 -each.end9880: + 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) @@ -88985,195 +89040,195 @@ 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 %then9903, label %endif9905 +then9903: %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 %endif9905 +endif9905: %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.6684, 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.cond9906 +while.cond9906: %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.from9909 +logic.from9909: + br i1 %t31, label %logic.rhs9910, label %logic.end9911 +logic.rhs9910: %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 %range9912, label %inrange9913 +range9912: + call void @finch_panic_index(ptr @.str.6685, i64 522, i64 %t33, i64 %t35) unreachable -inrange9906: +inrange9913: %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.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: %t42 = load i64, ptr %a29 %t43 = sub i64 %t42, 1 store i64 %t43, ptr %a29 - br label %while.cond9899 -while.end9901: + br label %while.cond9906 +while.end9908: %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.from9915 +logic.from9915: + br i1 %t45, label %logic.rhs9916, label %logic.end9917 +logic.rhs9916: %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 %range9918, label %inrange9919 +range9918: + call void @finch_panic_index(ptr @.str.6686, i64 525, i64 %t47, i64 %t49) unreachable -inrange9912: +inrange9919: %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.rend9920 +logic.rend9920: + br label %logic.end9917 +logic.end9917: + %t55 = phi i1 [ false, %logic.from9915 ], [ %t54, %logic.rend9920 ] store i1 %t55, ptr %a56 %t57 = load i1, ptr %a56 - br i1 %t57, label %then9914, label %endif9916 -then9914: + br i1 %t57, label %then9921, label %endif9923 +then9921: %t58 = load i64, ptr %a29 %t59 = sub i64 %t58, 1 store i64 %t59, ptr %a60 - br label %while.cond9917 -while.cond9917: + br label %while.cond9924 +while.cond9924: %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.from9927 +logic.from9927: + br i1 %t62, label %logic.rhs9928, label %logic.end9929 +logic.rhs9928: %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 %range9930, label %inrange9931 +range9930: + call void @finch_panic_index(ptr @.str.6687, i64 528, i64 %t64, i64 %t66) unreachable -inrange9924: +inrange9931: %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.from9932 +logic.from9932: + br i1 %t71, label %logic.end9934, label %logic.rhs9933 +logic.rhs9933: %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 %range9935, label %inrange9936 +range9935: + call void @finch_panic_index(ptr @.str.6688, i64 528, i64 %t73, i64 %t75) unreachable -inrange9929: +inrange9936: %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.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: %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 %range9941, label %inrange9942 +range9941: + call void @finch_panic_index(ptr @.str.6689, i64 528, i64 %t83, i64 %t85) unreachable -inrange9935: +inrange9942: %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.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: %t93 = load i64, ptr %a60 %t94 = sub i64 %t93, 1 store i64 %t94, ptr %a60 - br label %while.cond9917 -while.end9919: + br label %while.cond9924 +while.end9926: %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.6690, 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.6692, 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 %then9945, label %endif9947 +then9945: %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.6693, i64 535) %t116 = load { ptr, i64, i64 }, ptr %a114 store { ptr, i64, i64 } %t116, ptr %a102 store i1 true, ptr %a103 - br label %endif9940 -endif9940: + 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 @@ -89181,41 +89236,41 @@ endif9940: %t121 = load i64, ptr %t118 %t122 = load ptr, ptr %t117 store i64 0, ptr %a123 - br label %find.cond9941 -find.cond9941: + br label %find.cond9948 +find.cond9948: %t124 = load i64, ptr %a123 %t125 = icmp slt i64 %t124, %t121 - br i1 %t125, label %find.body9942, label %find.end9945 -find.body9942: + 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.hit9943, label %find.next9944 -find.hit9943: + br i1 %t131, label %find.hit9950, label %find.next9951 +find.hit9950: store i64 %t124, ptr %a120 - br label %find.end9945 -find.next9944: + br label %find.end9952 +find.next9951: %t132 = add i64 %t124, 1 store i64 %t132, ptr %a123 - br label %find.cond9941 -find.end9945: + br label %find.cond9948 +find.end9952: %t133 = load i64, ptr %a120 %t134 = icmp sge i64 %t133, 0 - br i1 %t134, label %then9946, label %endif9948 -then9946: + 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.cond9949 -each.cond9949: + 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.body9950, label %each.end9952 -each.body9950: + 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 @@ -89227,46 +89282,46 @@ each.body9950: 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: + 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.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: + 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 %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 }) + %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 %endif9959 -endif9959: - br label %each.step9951 -each.step9951: + 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.cond9949 -each.end9952: + 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.cond9960 -each.cond9960: + 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.body9961, label %each.end9963 -each.body9961: + 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 @@ -89278,37 +89333,37 @@ each.body9961: 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: + 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.6691, i64 7, i64 0 }, ptr %a186 + 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.6692, i64 0, i64 0 }) + %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 %endif9966 -endif9966: - br label %each.step9962 -each.step9962: + 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.cond9960 -each.end9963: + 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.cond9967 -each.cond9967: + 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.body9968, label %each.end9970 -each.body9968: + 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 @@ -89320,41 +89375,41 @@ each.body9968: 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: + 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.6693, i64 5, i64 0 }, ptr %a214 + 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.6694, i64 0, i64 0 }) + %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 %endif9973 -endif9973: - br label %each.step9969 -each.step9969: + 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.cond9967 -each.end9970: + 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 -endif9948: +endif9955: %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 store i64 0, ptr %a223 - br label %each.cond9974 -each.cond9974: + 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.body9975, label %each.end9977 -each.body9975: + 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 @@ -89366,10 +89421,10 @@ each.body9975: 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: + 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 %t241 = load { ptr, i64, i64 }, ptr %a102 @@ -89381,23 +89436,23 @@ logic.rhs9979: %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: + 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.cond9985 -each.cond9985: + 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.body9986, label %each.end9988 -each.body9986: + 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 @@ -89406,7 +89461,7 @@ each.body9986: %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 + 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 @@ -89414,26 +89469,26 @@ each.body9986: 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 }) + %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.step9987 -each.step9987: + br label %each.step9994 +each.step9994: %t274 = load i64, ptr %a252 %t275 = add i64 %t274, 1 store i64 %t275, ptr %a252 - br label %each.cond9985 -each.end9988: + 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 -endif9984: - br label %each.step9976 -each.step9976: +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.cond9974 -each.end9977: + 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 @@ -89445,117 +89500,117 @@ each.end9977: %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 + br i1 %t290, label %logic.rhs9997, label %logic.end9998 logic.rhs9997: - %t305 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t305, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.6700, i64 3, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 + %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: - %t310 = phi i1 [ false, %logic.from9996 ], [ %t309, %logic.rend9999 ] - br i1 %t310, label %then10000, label %endif10002 + %t297 = phi i1 [ false, %logic.from9996 ], [ %t296, %logic.rend9999 ] + br i1 %t297, label %then10000, label %else10001 then10000: - store { ptr, i64, i64 } { ptr @.str.6701, i64 4, i64 0 }, ptr %a289 + %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 -endif10002: - br label %endif9995 -endif9995: - %t311 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.6703, i64 4, i64 0 }, ptr %a314 - %t315 = call i32 @finch_str_starts(ptr %a312, ptr %a314) - %t316 = icmp ne i32 %t315, 0 +else10001: + %t304 = load i1, ptr %a103 br label %logic.from10003 logic.from10003: - br i1 %t316, label %logic.rhs10004, label %logic.end10005 + br i1 %t304, label %logic.rhs10004, label %logic.end10005 logic.rhs10004: - %t317 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } { ptr @.str.6705, i64 1, i64 0 }, ptr %a320 - %t321 = call i32 @finch_str_ends(ptr %a318, ptr %a320) - %t322 = icmp ne i32 %t321, 0 + %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) + %t309 = icmp ne i32 %t308, 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 + %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 + 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 + 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.6706, i64 574) + 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 %endif10009 -endif10009: + br label %endif10016 +endif10016: %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 + 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 %then10010, label %else10011 -then10010: + 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 %endif10012 -else10011: + br label %endif10019 +else10018: %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 + 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 %then10013, label %else10014 -then10013: + 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 %endif10015 -else10014: + br label %endif10022 +else10021: %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 + 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 %then10016, label %else10017 -then10016: + 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 %endif10018 -else10017: + 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) @@ -89563,14 +89618,14 @@ else10017: 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: + 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.body10020, label %each.end10022 -each.body10020: + 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 @@ -89582,28 +89637,28 @@ each.body10020: 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: + 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.cond10026 -for.cond10026: + br label %for.cond10033 +for.cond10033: %t377 = load i64, ptr %a376 %t378 = icmp slt i64 %t377, %t375 - br i1 %t378, label %for.body10027, label %for.end10029 -for.body10027: + 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 %range10030, label %inrange10031 -range10030: - call void @finch_panic_index(ptr @.str.6712, i64 587, i64 %t380, i64 %t382) + br i1 %t383, label %range10037, label %inrange10038 +range10037: + call void @finch_panic_index(ptr @.str.6716, i64 587, i64 %t380, i64 %t382) unreachable -inrange10031: +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 @@ -89612,42 +89667,42 @@ inrange10031: %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) + br i1 %t391, label %range10039, label %inrange10040 +range10039: + call void @finch_panic_index(ptr @.str.6717, i64 587, i64 %t388, i64 %t390) unreachable -inrange10033: +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.6714, i64 0, i64 0 }) + %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.step10028 -for.step10028: + br label %for.step10035 +for.step10035: %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: + 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.cond10019 -each.end10022: + 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.cond10034 -each.cond10034: + 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.body10035, label %each.end10037 -each.body10035: + 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 @@ -89659,44 +89714,44 @@ each.body10035: 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: + 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.6715, i64 0, i64 0 }) + %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 %endif10040 -endif10040: - br label %each.step10036 -each.step10036: + 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.cond10034 -each.end10037: - br label %endif10018 -endif10018: - br label %endif10015 -endif10015: - br label %endif10012 -endif10012: + 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 -endif9916: +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.cond10041 -each.cond10041: + 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.body10042, label %each.end10044 -each.body10042: + 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 @@ -89705,24 +89760,24 @@ each.body10042: %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: + 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.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: + 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 @@ -89730,50 +89785,50 @@ logic.rhs10050: 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: + 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.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: + 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.6716, i64 0, i64 0 }) + %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 %endif10059 -endif10059: - br label %each.step10043 -each.step10043: + 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.cond10041 -each.end10044: + 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.cond10060 -each.cond10060: + 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.body10061, label %each.end10063 -each.body10061: + 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 @@ -89782,60 +89837,60 @@ each.body10061: %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: + 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.6717, i64 0, i64 0 }, ptr %a483 + 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.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: + 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.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: + 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.6718, i64 0, i64 0 }) + %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 %endif10074 -endif10074: - br label %each.step10062 -each.step10062: + 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.cond10060 -each.end10063: + 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.cond10075 -each.cond10075: + 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.body10076, label %each.end10078 -each.body10076: + 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 @@ -89843,52 +89898,52 @@ each.body10076: %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 + 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.from10079 -logic.from10079: - br i1 %t513, label %logic.rhs10080, label %logic.end10081 -logic.rhs10080: + 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.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: + 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 %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 } { 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.6721, i64 0, i64 0 }) + %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 %endif10085 -endif10085: - br label %each.step10077 -each.step10077: + 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.cond10075 -each.end10078: + 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.cond10086 -each.cond10086: + 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.body10087, label %each.end10089 -each.body10087: + 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 @@ -89896,83 +89951,83 @@ each.body10087: %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 + 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.from10090 -logic.from10090: - br i1 %t544, label %logic.rhs10091, label %logic.end10092 -logic.rhs10091: + 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.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: + 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.6723, i64 5, i64 0 }, ptr %a554 + 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.6724, i64 0, i64 0 }) + %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 %endif10096 -endif10096: - br label %each.step10088 -each.step10088: + 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.cond10086 -each.end10089: + 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.cond10097 -each.cond10097: + 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.body10098, label %each.end10100 -each.body10098: + 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 %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: + 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.6725, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6726, i64 0, i64 0 }) + %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 %endif10103 -endif10103: - br label %each.step10099 -each.step10099: + 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.cond10097 -each.end10100: + 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.cond10104 -each.cond10104: + 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.body10105, label %each.end10107 -each.body10105: + 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 @@ -89980,8 +90035,8 @@ each.body10105: %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: + 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 @@ -89990,77 +90045,77 @@ then10108: %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: + 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.cond10104 -each.end10107: + 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.cond10111 -each.cond10111: + 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.body10112, label %each.end10114 -each.body10112: + 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 %then10115, label %endif10117 -then10115: + 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.6727, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6728, i64 0, i64 0 }) + %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 %endif10117 -endif10117: - br label %each.step10113 -each.step10113: + 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.cond10111 -each.end10114: + 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.cond10118 -each.cond10118: + 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.body10119, label %each.end10121 -each.body10119: + 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 %then10122, label %endif10124 -then10122: + 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.6729, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6730, i64 0, i64 0 }) + %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 %endif10124 -endif10124: - br label %each.step10120 -each.step10120: + 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.cond10118 -each.end10121: + 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 @@ -90083,33 +90138,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.cond10132 +find.cond10132: %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.body10133, label %find.end10136 +find.body10133: %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.hit10134, label %find.next10135 +find.hit10134: store i64 %t9, ptr %a5 - br label %find.end10129 -find.next10128: + br label %find.end10136 +find.next10135: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond10125 -find.end10129: + br label %find.cond10132 +find.end10136: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then10130, label %endif10132 -then10130: + br i1 %t19, label %then10137, label %endif10139 +then10137: ret i1 false -endif10132: +endif10139: %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 @@ -90136,9 +90191,9 @@ entry: %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) + 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.6732, i64 5, i64 0 }, %S.json.Json %t5) + 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) @@ -90219,17 +90274,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 %then10140, label %endif10142 +then10140: %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 %endif10142 +endif10142: %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.6737, i64 671) %t23 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t23, ptr %a24 store i64 0, ptr %a25 @@ -90239,241 +90294,241 @@ 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.cond10143 +while.cond10143: %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.body10144, label %while.end10145 +while.body10144: %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 %range10146, label %inrange10147 +range10146: + call void @finch_panic_index(ptr @.str.6738, i64 678, i64 %t34, i64 %t36) unreachable -inrange10140: +inrange10147: %t38 = extractvalue { ptr, i64, i64 } %t35, 0 %t39 = getelementptr inbounds i8, ptr %t38, i64 %t34 %t40 = load i8, ptr %t39 store i8 %t40, ptr %a41 %t42 = load i8, ptr %a41 %t43 = icmp eq i8 %t42, 41 - br label %logic.from10141 -logic.from10141: - br i1 %t43, label %logic.end10143, label %logic.rhs10142 -logic.rhs10142: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend10144 -logic.rend10144: - br label %logic.end10143 -logic.end10143: - %t46 = phi i1 [ true, %logic.from10141 ], [ %t45, %logic.rend10144 ] - br i1 %t46, label %then10145, label %else10146 -then10145: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif10147 -else10146: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 br label %logic.from10148 logic.from10148: - br i1 %t50, label %logic.end10150, label %logic.rhs10149 + br i1 %t43, label %logic.end10150, label %logic.rhs10149 logic.rhs10149: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 + %t44 = load i8, ptr %a41 + %t45 = icmp eq i8 %t44, 93 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 + %t46 = phi i1 [ true, %logic.from10148 ], [ %t45, %logic.rend10151 ] + br i1 %t46, label %then10152, label %else10153 then10152: + %t47 = load i64, ptr %a25 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a25 + br label %endif10154 +else10153: + %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: + %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: %t54 = load i64, ptr %a25 %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then10155, label %else10156 -then10155: + br i1 %t55, label %then10162, label %else10163 +then10162: %t56 = load i8, ptr %a41 %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then10158, label %endif10160 -then10158: + br i1 %t57, label %then10165, label %endif10167 +then10165: %t58 = load i64, ptr %a31 store i64 %t58, ptr %a27 - br label %while.end10138 -endif10160: - br label %endif10157 -else10156: + br label %while.end10145 +endif10167: + br label %endif10164 +else10163: %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 %endif10164 +endif10164: + br label %endif10161 +else10160: %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.from10168 +logic.from10168: + br i1 %t62, label %logic.rhs10169, label %logic.end10170 +logic.rhs10169: %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.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: %t66 = load i64, ptr %a26 %t67 = add i64 %t66, 1 store i64 %t67, ptr %a26 - br label %endif10167 -endif10167: + br label %endif10174 +endif10174: + br label %endif10161 +endif10161: br label %endif10154 endif10154: - br label %endif10147 -endif10147: %t68 = load i64, ptr %a31 %t69 = sub i64 %t68, 1 store i64 %t69, ptr %a31 - br label %while.cond10136 -while.end10138: + br label %while.cond10143 +while.end10145: %t70 = load i64, ptr %a27 %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then10168, label %endif10170 -then10168: + br i1 %t71, label %then10175, label %endif10177 +then10175: %t72 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t72 -endif10170: +endif10177: %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.cond10178 +while.cond10178: %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.from10181 +logic.from10181: + br i1 %t78, label %logic.rhs10182, label %logic.end10183 +logic.rhs10182: %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 %range10184, label %inrange10185 +range10184: + call void @finch_panic_index(ptr @.str.6739, i64 700, i64 %t80, i64 %t82) unreachable -inrange10178: +inrange10185: %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.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: %t89 = load i64, ptr %a76 %t90 = sub i64 %t89, 1 store i64 %t90, ptr %a76 - br label %while.cond10171 -while.end10173: + br label %while.cond10178 +while.end10180: %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.6740, 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 %then10187, label %endif10189 +then10187: %t101 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t101 -endif10182: - store { ptr, i64, i64 } { ptr @.str.6737, i64 0, i64 0 }, ptr %a102 +endif10189: + store { ptr, i64, i64 } { ptr @.str.6741, 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.from10190 +logic.from10190: + br i1 %t104, label %logic.rhs10191, label %logic.end10192 +logic.rhs10191: %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 %range10193, label %inrange10194 +range10193: + call void @finch_panic_index(ptr @.str.6742, i64 708, i64 %t106, i64 %t108) unreachable -inrange10187: +inrange10194: %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.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: %t115 = load i64, ptr %a76 %t116 = sub i64 %t115, 1 store i64 %t116, ptr %a117 - br label %while.cond10192 -while.cond10192: + br label %while.cond10199 +while.cond10199: %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.from10202 +logic.from10202: + br i1 %t119, label %logic.rhs10203, label %logic.end10204 +logic.rhs10203: %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 %range10205, label %inrange10206 +range10205: + call void @finch_panic_index(ptr @.str.6743, i64 711, i64 %t121, i64 %t123) unreachable -inrange10199: +inrange10206: %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.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: %t130 = load i64, ptr %a117 %t131 = sub i64 %t130, 1 store i64 %t131, ptr %a117 - br label %while.cond10192 -while.end10194: + br label %while.cond10199 +while.end10201: %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.6744, i64 714) %t138 = load { ptr, i64, i64 }, ptr %a134 store { ptr, i64, i64 } %t138, ptr %a139 %t140 = load %S.lsp.Analysis, ptr %a1 @@ -90488,52 +90543,52 @@ while.end10194: 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 + 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.from10201 -logic.from10201: - br i1 %t155, label %logic.rhs10202, label %logic.end10203 -logic.rhs10202: + 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.6744, i64 1, i64 0 }, ptr %a159 + 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.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: + 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.6745, i64 717) + 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 %endif10207 -endif10207: + 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 %endif10191 -endif10191: + br label %endif10198 +endif10198: %t174 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 store i64 0, ptr %a175 - br label %each.cond10208 -each.cond10208: + 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.body10209, label %each.end10211 -each.body10209: + 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 @@ -90545,10 +90600,10 @@ each.body10209: 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: + 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 @@ -90556,31 +90611,31 @@ logic.rhs10213: 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: + 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.6746, i64 5, i64 0 }, %S.json.Json %t203) + 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.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: + 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.body10220, label %each.end10222 -each.body10220: + 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 @@ -90588,26 +90643,26 @@ each.body10220: %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: + 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.6747, i64 5, i64 0 }, %S.json.Json %t222) + 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 %endif10225 -endif10225: - br label %each.step10221 -each.step10221: + 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.cond10219 -each.end10222: + 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.6748, i64 10, i64 0 }, %S.json.Json %t226) + 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 @@ -90615,22 +90670,22 @@ each.end10222: %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) + 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.6750, i64 15, i64 0 }, %S.json.Json %t233) + 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.6751, i64 15, i64 0 }, %S.json.Json %t235) + 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 -endif10218: - br label %each.step10210 -each.step10210: +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.cond10208 -each.end10211: + 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) @@ -90639,18 +90694,18 @@ each.end10211: %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: + 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.6752, i64 5, i64 0 }, %S.json.Json %t251) + 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.6753, i64 13, i64 0 }, %S.json.Json %t254) + 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 @@ -90658,15 +90713,15 @@ then10226: %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) + 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.6755, i64 15, i64 0 }, %S.json.Json %t261) + 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.6756, i64 15, i64 0 }, %S.json.Json %t263) + 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 -endif10228: +endif10235: %t265 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t265 } @@ -90677,11 +90732,11 @@ 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.6761, 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.6762, i64 4, i64 0 }) store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6759, i64 0, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6763, i64 0, i64 0 }) ret { ptr, i64, i64 } %t6 } @@ -90691,11 +90746,11 @@ 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.6760, i64 12, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6764, 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.6765, i64 3, i64 0 }) store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6762, i64 0, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6766, i64 0, i64 0 }) %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) ret { ptr, i64, i64 } %t7 } @@ -90784,98 +90839,98 @@ entry: %a269 = alloca { ptr, i64, i64 }, align 16 %a270 = alloca { ptr, i64, i64 }, align 16 store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6763, i64 6, i64 0 }) + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6767, 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.6768, i64 0, i64 0 }) store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6765, i64 6, i64 0 }) + %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6769, 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.6770, 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.6771, 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.arm10237, label %match.next10238 +match.arm10237: %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) + 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.6769, i64 13, i64 0 }, %S.json.Json %t18) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6773, i64 13, i64 0 }, %S.json.Json %t18) %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6770, i64 18, i64 0 }, %S.json.Json %t19) + 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.6771, i64 22, i64 0 }, %S.json.Json %t20) + 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() store %S.json.Json %t21, ptr %a22 %t23 = call %S.json.Json @finch.json.new_list() store %S.json.Json %t23, ptr %a24 - %t25 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6772, i64 1, i64 0 }) + %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.6773, i64 17, i64 0 }, %S.json.Json %t26) + 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.6774, i64 18, i64 0 }, %S.json.Json %t27) + 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.6775, i64 1, i64 0 }) + %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.6776, i64 1, i64 0 }) + %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.6777, i64 17, i64 0 }, %S.json.Json %t34) + 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.6778, i64 21, i64 0 }, %S.json.Json %t35) + 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.6779, i64 12, i64 0 }, %S.json.Json %t38) + 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() 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) + %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.6782, i64 10, i64 0 }, %S.json.Json %t42) + 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.end10229 -match.next10231: + br label %match.end10236 +match.next10238: store { ptr, i64, i64 } %t10, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.6783, i64 8, i64 0 }, ptr %a46 + 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.arm10232, label %match.next10233 -match.arm10232: + 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.end10229 -match.next10233: + br label %match.end10236 +match.next10240: store { ptr, i64, i64 } %t10, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6784, i64 4, i64 0 }, ptr %a53 + 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.arm10234, label %match.next10235 -match.arm10234: + 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.end10229 -match.next10235: + br label %match.end10236 +match.next10242: store { ptr, i64, i64 } %t10, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.6785, i64 20, i64 0 }, ptr %a59 + 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.arm10236, label %match.next10237 -match.arm10236: + 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 @@ -90891,42 +90946,42 @@ match.arm10236: %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: + 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.have10239 -map.have10239: + 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.end10229 -match.next10237: + br label %match.end10236 +match.next10244: store { ptr, i64, i64 } %t10, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6786, i64 22, i64 0 }, ptr %a82 + 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.arm10240, label %match.next10241 -match.arm10240: + 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.6787, i64 14, i64 0 }) + %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 %then10242, label %endif10244 -then10242: + 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.6788, i64 4, i64 0 }) + %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.6789, i64 0, i64 0 }) + %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 @@ -90937,28 +90992,28 @@ then10242: %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: + 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.have10246 -map.have10246: + 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 %endif10244 -endif10244: - br label %match.end10229 -match.next10241: + br label %endif10251 +endif10251: + br label %match.end10236 +match.next10248: store { ptr, i64, i64 } %t10, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.6790, i64 20, i64 0 }, ptr %a114 + 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.arm10247, label %match.next10248 -match.arm10247: + 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 @@ -90967,20 +91022,20 @@ match.arm10247: 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: + br i1 %t124, label %then10256, label %endif10258 +then10256: %t125 = load { ptr, i64, i64 }, ptr %a119 call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif10251 -endif10251: - br label %match.end10229 -match.next10248: + br label %endif10258 +endif10258: + br label %match.end10236 +match.next10255: 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.6795, i64 21, i64 0 }, ptr %a127 %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm10252, label %match.next10253 -match.arm10252: + br i1 %t129, label %match.arm10259, label %match.next10260 +match.arm10259: %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 @@ -90989,86 +91044,86 @@ 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: + 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.end10255 -remove.end10255: + 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.hit10256, label %remove.end10257 -remove.hit10256: + 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.end10257 -remove.end10257: + 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 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: + 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.end10259 -remove.end10259: + 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.6792, i64 3, i64 0 }, %S.json.Json %t152) + 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.6793, i64 11, i64 0 }, %S.json.Json %t153) + 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.6794, i64 31, i64 0 }, %S.json.Json %t154) - br label %match.end10229 -match.next10253: + 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.6795, i64 18, i64 0 }, ptr %a156 + 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.arm10260, label %match.or10262 -match.or10262: + br i1 %t158, label %match.arm10267, label %match.or10269 +match.or10269: store { ptr, i64, i64 } %t10, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.6796, i64 23, i64 0 }, ptr %a160 + 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.arm10260, label %match.or10263 -match.or10263: + br i1 %t162, label %match.arm10267, label %match.or10270 +match.or10270: store { ptr, i64, i64 } %t10, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6797, i64 23, i64 0 }, ptr %a164 + 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.arm10260, label %match.or10264 -match.or10264: + br i1 %t166, label %match.arm10267, label %match.or10271 +match.or10271: store { ptr, i64, i64 } %t10, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.6798, i64 27, i64 0 }, ptr %a168 + 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.arm10260, label %match.or10265 -match.or10265: + br i1 %t170, label %match.arm10267, label %match.or10272 +match.or10272: store { ptr, i64, i64 } %t10, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6799, i64 26, i64 0 }, ptr %a172 + 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.arm10260, label %match.next10261 -match.arm10260: + 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.6800, i64 8, i64 0 }) + %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.6801, i64 4, i64 0 }) + %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.6802, i64 8, i64 0 }) + %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.6803, i64 9, i64 0 }) + %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 @@ -91079,26 +91134,26 @@ match.arm10260: %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: + 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) ret void -endif10268: +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.missing10269, label %map.found10270 -map.missing10269: + 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.6804, i64 842, ptr %a205) + call void @finch_map_missing(ptr @.str.6808, i64 842, ptr %a205) unreachable -map.found10270: +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 @@ -91108,27 +91163,27 @@ map.found10270: 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 + 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 %then10271, label %endif10273 -then10271: + 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.missing10274, label %map.found10275 -map.missing10274: + 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.6806, i64 845, ptr %a227) + call void @finch_map_missing(ptr @.str.6810, i64 845, ptr %a227) unreachable -map.found10275: +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 @@ -91138,15 +91193,15 @@ map.found10275: 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: + br label %endif10280 +endif10280: %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 + 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.arm10277, label %match.next10278 -match.arm10277: + 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 @@ -91154,14 +91209,14 @@ match.arm10277: %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: + br label %match.end10283 +match.next10285: store { ptr, i64, i64 } %t237, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.6808, i64 23, i64 0 }, ptr %a249 + 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.arm10279, label %match.next10280 -match.arm10279: + 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 @@ -91169,14 +91224,14 @@ match.arm10279: %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: + br label %match.end10283 +match.next10287: store { ptr, i64, i64 } %t237, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.6809, i64 23, i64 0 }, ptr %a259 + 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.arm10281, label %match.next10282 -match.arm10281: + 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 @@ -91185,23 +91240,23 @@ match.arm10281: %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: + br label %match.end10283 +match.next10289: store { ptr, i64, i64 } %t237, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.6810, i64 27, i64 0 }, ptr %a270 + 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.arm10283, label %match.next10284 -match.arm10283: + 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.end10276 -match.next10284: - br label %match.arm10285 -match.arm10285: + 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 @@ -91210,24 +91265,24 @@ match.arm10285: %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: + 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 %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %then10289, label %endif10291 -then10289: + br i1 %t286, label %then10296, label %endif10298 +then10296: %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: + br label %endif10298 +endif10298: + br label %match.end10236 +match.end10236: ret void } @@ -91261,39 +91316,39 @@ entry: %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 } { 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.cond10292 -while.cond10292: - br label %while.body10293 -while.body10293: + 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.failed10295, label %or.ok10296 -or.failed10295: + br i1 %t19, label %or.failed10302, label %or.ok10303 +or.failed10302: store { ptr, i64, i64 } %t20, ptr %a22 - br label %while.end10294 -or.ok10296: + 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.cond10292 -while.end10294: + 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.6812, i64 8, i64 0 }, ptr %a28 + 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.6813, i64 1, i64 0 }, ptr %a33 + 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 @@ -91373,35 +91428,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.arm10305, label %match.or10307 +match.or10307: %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm10298, label %match.next10299 -match.arm10298: + br i1 %t4, label %match.arm10305, label %match.next10306 +match.arm10305: %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.from10308 +match.from10308: + br label %match.end10304 +match.next10306: %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm10302, label %match.next10303 -match.arm10302: + br i1 %t8, label %match.arm10309, label %match.next10310 +match.arm10309: %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.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 ] ret i64 %t12 } @@ -91416,10 +91471,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.from10315 +logic.from10315: + br i1 %t4, label %logic.rhs10316, label %logic.end10317 +logic.rhs10316: %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 @@ -91427,34 +91482,34 @@ 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.cond10318 +find.cond10318: %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.body10319, label %find.end10322 +find.body10319: %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.hit10320, label %find.next10321 +find.hit10320: store i64 %t12, ptr %a8 - br label %find.end10315 -find.next10314: + br label %find.end10322 +find.next10321: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond10311 -find.end10315: + br label %find.cond10318 +find.end10322: %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.rend10323 +logic.rend10323: + br label %logic.end10317 +logic.end10317: + %t23 = phi i1 [ false, %logic.from10315 ], [ %t22, %logic.rend10323 ] ret i1 %t23 } @@ -91472,11 +91527,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 %then10324, label %endif10326 +then10324: %t5 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t5 -endif10319: +endif10326: %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 @@ -91484,46 +91539,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.cond10327 +find.cond10327: %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.body10328, label %find.end10331 +find.body10328: %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.hit10329, label %find.next10330 +find.hit10329: store i64 %t13, ptr %a9 - br label %find.end10324 -find.next10323: + br label %find.end10331 +find.next10330: %t21 = add i64 %t13, 1 store i64 %t21, ptr %a12 - br label %find.cond10320 -find.end10324: + br label %find.cond10327 +find.end10331: %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 %then10332, label %endif10334 +then10332: %t26 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t26 -endif10327: +endif10334: %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 %range10335, label %inrange10336 +range10335: + call void @finch_panic_index(ptr @.str.6818, i64 84, i64 %t28, i64 %t30) unreachable -inrange10329: +inrange10336: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.json.Json, ptr %t32, i64 %t28 %t34 = load %S.json.Json, ptr %t33 @@ -91542,46 +91597,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.from10337 +logic.from10337: + br i1 %t4, label %logic.end10339, label %logic.rhs10338 +logic.rhs10338: %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.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: %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.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: %t14 = call %S.json.Json @finch.json.new_null() ret %S.json.Json %t14 -endif10340: +endif10347: %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 %range10348, label %inrange10349 +range10348: + call void @finch_panic_index(ptr @.str.6819, i64 92, i64 %t16, i64 %t18) unreachable -inrange10342: +inrange10349: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.json.Json, ptr %t20, i64 %t16 %t22 = load %S.json.Json, ptr %t21 @@ -91602,15 +91657,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 %then10350, label %endif10352 +then10350: %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: +endif10352: %t10 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t10, ptr %a11 call void @finch_str_copy(ptr %a12, ptr %a11) @@ -91625,12 +91680,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 %then10353, label %endif10355 +then10353: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 %t6 = load double, ptr %t5 ret double %t6 -endif10348: +endif10355: %t7 = load double, ptr %a1 ret double %t7 } @@ -91642,13 +91697,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 %then10356, label %endif10358 +then10356: %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: +endif10358: %t8 = load i64, ptr %a1 ret i64 %t8 } @@ -91660,12 +91715,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 %then10359, label %endif10361 +then10359: %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 %t6 = load i1, ptr %t5 ret i1 %t6 -endif10354: +endif10361: %t7 = load i1, ptr %a1 ret i1 %t7 } @@ -91728,44 +91783,44 @@ 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.cond10362 +find.cond10362: %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.body10363, label %find.end10366 +find.body10363: %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.hit10364, label %find.next10365 +find.hit10364: store i64 %t10, ptr %a6 - br label %find.end10359 -find.next10358: + br label %find.end10366 +find.next10365: %t18 = add i64 %t10, 1 store i64 %t18, ptr %a9 - br label %find.cond10355 -find.end10359: + br label %find.cond10362 +find.end10366: %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 %then10367, label %endif10369 +then10367: %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 %range10370, label %inrange10371 +range10370: + call void @finch_panic_index(ptr @.str.6820, i64 140, i64 %t25, i64 %t27) unreachable -inrange10364: +inrange10371: %t29 = extractvalue { ptr, i64, i64 } %t26, 0 %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 store %S.json.Json %t23, ptr %a31 @@ -91773,7 +91828,7 @@ inrange10364: %t33 = load %S.json.Json, ptr %a32 store %S.json.Json %t33, ptr %t30 ret void -endif10362: +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 @@ -91823,20 +91878,20 @@ entry: %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.6821, 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.cond10372 +each.cond10372: %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.body10373, label %each.end10375 +each.body10373: %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds i8, ptr %t14, i64 %t12 %t16 = load i8, ptr %t15 @@ -91846,83 +91901,83 @@ 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 %then10376, label %else10377 +then10376: %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.6822, i64 2, i64 0 }, ptr %t27 store i64 %t25, ptr %t23 - br label %endif10371 -else10370: + br label %endif10378 +else10377: %t28 = load i8, ptr %a17 %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then10372, label %else10373 -then10372: + br i1 %t29, label %then10379, label %else10380 +then10379: %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.6823, i64 2, i64 0 }, ptr %t34 store i64 %t32, ptr %t30 - br label %endif10374 -else10373: + br label %endif10381 +else10380: %t35 = load i8, ptr %a17 %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then10375, label %else10376 -then10375: + br i1 %t36, label %then10382, label %else10383 +then10382: %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.6824, i64 2, i64 0 }, ptr %t41 store i64 %t39, ptr %t37 - br label %endif10377 -else10376: + br label %endif10384 +else10383: %t42 = load i8, ptr %a17 %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then10378, label %else10379 -then10378: + br i1 %t43, label %then10385, label %else10386 +then10385: %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.6825, i64 2, i64 0 }, ptr %t48 store i64 %t46, ptr %t44 - br label %endif10380 -else10379: + br label %endif10387 +else10386: %t49 = load i8, ptr %a17 %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then10381, label %else10382 -then10381: + br i1 %t50, label %then10388, label %else10389 +then10388: %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.6826, i64 2, i64 0 }, ptr %t55 store i64 %t53, ptr %t51 - br label %endif10383 -else10382: + br label %endif10390 +else10389: %t56 = load i64, ptr %a20 %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then10384, label %else10385 -then10384: + br i1 %t57, label %then10391, label %else10392 +then10391: %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.6827, 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 @@ -91940,8 +91995,8 @@ then10384: %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: + 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) @@ -91953,35 +92008,35 @@ else10385: %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: + 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.cond10365 -each.end10368: + br label %each.cond10372 +each.end10375: %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 %t88 = load i64, ptr %t87 %t89 = add i64 %t88, 1 call void @finch_arr_reserve(ptr %a8, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t90 = load ptr, ptr %a8 %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88 - store { ptr, i64, i64 } { ptr @.str.6824, i64 1, i64 0 }, ptr %t91 + store { 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.6825, i64 0, i64 0 }, ptr %a93 + 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 @@ -91993,16 +92048,16 @@ 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.6830, 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 %range10394, label %inrange10395 +range10394: + call void @finch_panic_index(ptr @.str.6831, i64 175, i64 %t3, i64 %t5) unreachable -inrange10388: +inrange10395: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 %t9 = load i8, ptr %t8 @@ -92022,37 +92077,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.from10396 +logic.from10396: + br i1 %t6, label %logic.rhs10397, label %logic.end10398 +logic.rhs10397: %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.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: %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.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: %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: +endif10406: %t18 = load double, ptr %a1 call void @finch_str_from_float(ptr %a19, double %t18) %t20 = load { ptr, i64, i64 }, ptr %a19 @@ -92114,16 +92169,16 @@ entry: 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.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 %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 + 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 @@ -92131,21 +92186,21 @@ then10400: 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: + 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.arm10404, label %match.next10405 -match.arm10404: + 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 %panic10406, label %ok10407 -panic10406: - call void @finch_panic(ptr @.str.6834, i64 200, ptr @.str.6835) + br i1 %t22, label %panic10413, label %ok10414 +panic10413: + call void @finch_panic(ptr @.str.6838, i64 200, ptr @.str.6839) unreachable -ok10407: +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 @@ -92153,24 +92208,24 @@ ok10407: 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 { ptr, i64, i64 } { ptr @.str.6840, i64 4, i64 0 }, ptr %t28 store i64 %t26, ptr %t24 - br label %match.end10403 -match.next10405: + br label %match.end10410 +match.next10412: %t29 = icmp eq i32 %t19, 1 - br i1 %t29, label %match.arm10408, label %match.next10409 -match.arm10408: + 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 %then10410, label %else10411 -then10410: + br i1 %t31, label %then10417, label %else10418 +then10417: %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) + br i1 %t33, label %panic10420, label %ok10421 +panic10420: + call void @finch_panic(ptr @.str.6841, i64 203, ptr @.str.6842) unreachable -ok10414: +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 @@ -92178,17 +92233,17 @@ ok10414: 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 { ptr, i64, i64 } { ptr @.str.6843, i64 4, i64 0 }, ptr %t39 store i64 %t37, ptr %t35 - br label %endif10412 -else10411: + br label %endif10419 +else10418: %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) + br i1 %t41, label %panic10422, label %ok10423 +panic10422: + call void @finch_panic(ptr @.str.6844, i64 205, ptr @.str.6845) unreachable -ok10416: +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 @@ -92196,22 +92251,22 @@ ok10416: 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 { ptr, i64, i64 } { ptr @.str.6846, i64 5, i64 0 }, ptr %t47 store i64 %t45, ptr %t43 - br label %endif10412 -endif10412: - br label %match.end10403 -match.next10409: + br label %endif10419 +endif10419: + br label %match.end10410 +match.next10416: %t48 = icmp eq i32 %t19, 2 - br i1 %t48, label %match.arm10417, label %match.next10418 -match.arm10417: + 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 %panic10419, label %ok10420 -panic10419: - call void @finch_panic(ptr @.str.6843, i64 208, ptr @.str.6844) + br i1 %t50, label %panic10426, label %ok10427 +panic10426: + call void @finch_panic(ptr @.str.6847, i64 208, ptr @.str.6848) unreachable -ok10420: +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 @@ -92224,18 +92279,18 @@ ok10420: %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: + br label %match.end10410 +match.next10425: %t60 = icmp eq i32 %t19, 3 - br i1 %t60, label %match.arm10421, label %match.next10422 -match.arm10421: + 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 %panic10423, label %ok10424 -panic10423: - call void @finch_panic(ptr @.str.6845, i64 209, ptr @.str.6846) + br i1 %t62, label %panic10430, label %ok10431 +panic10430: + call void @finch_panic(ptr @.str.6849, i64 209, ptr @.str.6850) unreachable -ok10424: +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 @@ -92248,24 +92303,24 @@ ok10424: %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: + br label %match.end10410 +match.next10429: %t72 = icmp eq i32 %t19, 4 - br i1 %t72, label %match.arm10425, label %match.next10426 -match.arm10425: + 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 %then10427, label %endif10429 -then10427: + br i1 %t76, label %then10434, label %endif10436 +then10434: %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) + br i1 %t78, label %panic10437, label %ok10438 +panic10437: + call void @finch_panic(ptr @.str.6851, i64 212, ptr @.str.6852) unreachable -ok10431: +ok10438: %t79 = getelementptr inbounds %S.json.Writer, ptr %t77, i32 0, i32 0 %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 %t81 = load i64, ptr %t80 @@ -92273,21 +92328,21 @@ ok10431: 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 { ptr, i64, i64 } { ptr @.str.6853, i64 2, i64 0 }, ptr %t84 store i64 %t82, ptr %t80 ret void -endif10429: +endif10436: %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) + br i1 %t86, label %panic10439, label %ok10440 +panic10439: + call void @finch_panic(ptr @.str.6854, i64 215, ptr @.str.6855) unreachable -ok10433: +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.6852, i64 1, i64 0 }, ptr %a91 + 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 @@ -92300,14 +92355,14 @@ ok10433: 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: + 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.body10435, label %each.end10437 -each.body10435: + 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 @@ -92315,15 +92370,15 @@ each.body10435: 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: + br i1 %t110, label %then10445, label %endif10447 +then10445: %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) + br i1 %t112, label %panic10448, label %ok10449 +panic10448: + call void @finch_panic(ptr @.str.6857, i64 218, ptr @.str.6858) unreachable -ok10442: +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 @@ -92339,15 +92394,15 @@ ok10442: %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: + br label %endif10447 +endif10447: %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) + br i1 %t126, label %panic10450, label %ok10451 +panic10450: + call void @finch_panic(ptr @.str.6859, i64 220, ptr @.str.6860) unreachable -ok10444: +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 @@ -92366,20 +92421,20 @@ ok10444: %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: + br label %each.step10443 +each.step10443: %t141 = load i64, ptr %a99 %t142 = add i64 %t141, 1 store i64 %t142, ptr %a99 - br label %each.cond10434 -each.end10437: + br label %each.cond10441 +each.end10444: %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) + br i1 %t144, label %panic10452, label %ok10453 +panic10452: + call void @finch_panic(ptr @.str.6861, i64 223, ptr @.str.6862) unreachable -ok10446: +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 @@ -92389,7 +92444,7 @@ ok10446: 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 + 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 @@ -92399,24 +92454,24 @@ ok10446: %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: + br label %match.end10410 +match.next10433: %t161 = icmp eq i32 %t19, 5 - br i1 %t161, label %match.arm10447, label %match.next10448 -match.arm10447: + 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 %then10449, label %endif10451 -then10449: + br i1 %t165, label %then10456, label %endif10458 +then10456: %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) + br i1 %t167, label %panic10459, label %ok10460 +panic10459: + call void @finch_panic(ptr @.str.6864, i64 227, ptr @.str.6865) unreachable -ok10453: +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 @@ -92424,21 +92479,21 @@ ok10453: 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 { ptr, i64, i64 } { ptr @.str.6866, i64 2, i64 0 }, ptr %t173 store i64 %t171, ptr %t169 ret void -endif10451: +endif10458: %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) + br i1 %t175, label %panic10461, label %ok10462 +panic10461: + call void @finch_panic(ptr @.str.6867, i64 230, ptr @.str.6868) unreachable -ok10455: +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.6865, i64 1, i64 0 }, ptr %a180 + 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 @@ -92451,14 +92506,14 @@ ok10455: 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: + 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.body10457, label %each.end10459 -each.body10457: + 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 @@ -92466,15 +92521,15 @@ each.body10457: 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: + br i1 %t199, label %then10467, label %endif10469 +then10467: %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) + br i1 %t201, label %panic10470, label %ok10471 +panic10470: + call void @finch_panic(ptr @.str.6870, i64 233, ptr @.str.6871) unreachable -ok10464: +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 @@ -92490,15 +92545,15 @@ ok10464: %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: + br label %endif10469 +endif10469: %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) + br i1 %t215, label %panic10472, label %ok10473 +panic10472: + call void @finch_panic(ptr @.str.6872, i64 235, ptr @.str.6873) unreachable -ok10466: +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 @@ -92507,11 +92562,11 @@ ok10466: %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) + br i1 %t223, label %range10474, label %inrange10475 +range10474: + call void @finch_panic_index(ptr @.str.6874, i64 235, i64 %t220, i64 %t222) unreachable -inrange10468: +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 @@ -92537,20 +92592,20 @@ inrange10468: %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: + br label %each.step10465 +each.step10465: %t245 = load i64, ptr %a188 %t246 = add i64 %t245, 1 store i64 %t246, ptr %a188 - br label %each.cond10456 -each.end10459: + br label %each.cond10463 +each.end10466: %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) + br i1 %t248, label %panic10476, label %ok10477 +panic10476: + call void @finch_panic(ptr @.str.6875, i64 238, ptr @.str.6876) unreachable -ok10470: +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 @@ -92560,7 +92615,7 @@ ok10470: 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 + 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 @@ -92570,15 +92625,15 @@ ok10470: %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) + 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) unreachable -ok10472: +ok10479: unreachable -match.end10403: +match.end10410: ret void } @@ -92591,10 +92646,10 @@ 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.6880, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6881, 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.6882, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 ret { ptr, i64, i64 } %t8 @@ -92609,10 +92664,10 @@ 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.6883, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.6884, 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.6885, i64 0, i64 0 }, ptr %a6 call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) %t8 = load { ptr, i64, i64 }, ptr %a7 ret { ptr, i64, i64 } %t8 @@ -92640,91 +92695,91 @@ entry: 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 %panic10480, label %ok10481 +panic10480: + call void @finch_panic(ptr @.str.6886, i64 268, ptr @.str.6887) unreachable -ok10474: +ok10481: %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.cond10482 +for.cond10482: %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.body10483, label %for.end10485 +for.body10483: %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 %panic10486, label %ok10487 +panic10486: + call void @finch_panic(ptr @.str.6888, i64 269, ptr @.str.6889) unreachable -ok10480: +ok10487: %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.from10488 +logic.from10488: + br i1 %t17, label %logic.rhs10489, label %logic.end10490 +logic.rhs10489: %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 %panic10491, label %ok10492 +panic10491: + call void @finch_panic(ptr @.str.6890, i64 269, ptr @.str.6891) unreachable -ok10485: +ok10492: %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 %range10493, label %inrange10494 +range10493: + call void @finch_panic_index(ptr @.str.6892, i64 269, i64 %t21, i64 %t23) unreachable -inrange10487: +inrange10494: %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.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: %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 %endif10498 +else10497: %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 %endif10498 +endif10498: + br label %for.step10484 +for.step10484: %t34 = load i64, ptr %a8 %t35 = add i64 %t34, 1 store i64 %t35, ptr %a8 - br label %for.cond10475 -for.end10478: + br label %for.cond10482 +for.end10485: %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.6893, 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 + 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 @@ -92743,56 +92798,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 %panic10499, label %ok10500 +panic10499: + call void @finch_panic(ptr @.str.6895, i64 280, ptr @.str.6896) unreachable -ok10493: +ok10500: %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 %panic10501, label %ok10502 +panic10501: + call void @finch_panic(ptr @.str.6897, i64 280, ptr @.str.6898) unreachable -ok10495: +ok10502: %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 %then10503, label %endif10505 +then10503: %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 %panic10506, label %ok10507 +panic10506: + call void @finch_panic(ptr @.str.6899, i64 281, ptr @.str.6900) unreachable -ok10500: +ok10507: %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 %panic10508, label %ok10509 +panic10508: + call void @finch_panic(ptr @.str.6901, i64 281, ptr @.str.6902) unreachable -ok10502: +ok10509: %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 %range10510, label %inrange10511 +range10510: + call void @finch_panic_index(ptr @.str.6903, i64 281, i64 %t18, i64 %t20) unreachable -inrange10504: +inrange10511: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 %t24 = load i8, ptr %t23 ret i8 %t24 -endif10498: +endif10505: %t25 = trunc i64 0 to i8 ret i8 %t25 } @@ -92801,195 +92856,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.cond10512 +while.cond10512: %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic10508, label %ok10509 -panic10508: - call void @finch_panic(ptr @.str.6900, i64 287, ptr @.str.6901) - unreachable -ok10509: - %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 - %t5 = load i64, ptr %t4 - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic10510, label %ok10511 -panic10510: - call void @finch_panic(ptr @.str.6902, i64 287, ptr @.str.6903) - unreachable -ok10511: - %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - %t11 = icmp slt i64 %t5, %t10 - br label %logic.from10512 -logic.from10512: - br i1 %t11, label %logic.rhs10513, label %logic.end10514 -logic.rhs10513: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic10515, label %ok10516 + br i1 %t3, label %panic10515, label %ok10516 panic10515: call void @finch_panic(ptr @.str.6904, i64 287, ptr @.str.6905) unreachable ok10516: - %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic10517, label %ok10518 + %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) unreachable ok10518: + %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: + %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) + unreachable +ok10523: + %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) + unreachable +ok10525: %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 %range10526, label %inrange10527 +range10526: + call void @finch_panic_index(ptr @.str.6912, i64 287, i64 %t18, i64 %t20) unreachable -inrange10520: +inrange10527: %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.from10528 +logic.from10528: + br i1 %t25, label %logic.end10530, label %logic.rhs10529 +logic.rhs10529: %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 %panic10531, label %ok10532 +panic10531: + call void @finch_panic(ptr @.str.6913, i64 287, ptr @.str.6914) unreachable -ok10525: +ok10532: %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 %panic10533, label %ok10534 +panic10533: + call void @finch_panic(ptr @.str.6915, i64 287, ptr @.str.6916) unreachable -ok10527: +ok10534: %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 %range10535, label %inrange10536 +range10535: + call void @finch_panic_index(ptr @.str.6917, i64 287, i64 %t32, i64 %t34) unreachable -inrange10529: +inrange10536: %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.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: %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 %panic10541, label %ok10542 +panic10541: + call void @finch_panic(ptr @.str.6918, i64 287, ptr @.str.6919) unreachable -ok10535: +ok10542: %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 %panic10543, label %ok10544 +panic10543: + call void @finch_panic(ptr @.str.6920, i64 287, ptr @.str.6921) unreachable -ok10537: +ok10544: %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 %range10545, label %inrange10546 +range10545: + call void @finch_panic_index(ptr @.str.6922, i64 287, i64 %t47, i64 %t49) unreachable -inrange10539: +inrange10546: %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.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: %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 %panic10551, label %ok10552 +panic10551: + call void @finch_panic(ptr @.str.6923, i64 287, ptr @.str.6924) unreachable -ok10545: +ok10552: %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 %panic10553, label %ok10554 +panic10553: + call void @finch_panic(ptr @.str.6925, i64 287, ptr @.str.6926) unreachable -ok10547: +ok10554: %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 %range10555, label %inrange10556 +range10555: + call void @finch_panic_index(ptr @.str.6927, i64 287, i64 %t62, i64 %t64) unreachable -inrange10549: +inrange10556: %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.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: %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 %panic10559, label %ok10560 +panic10559: + call void @finch_panic(ptr @.str.6928, i64 288, ptr @.str.6929) unreachable -ok10553: +ok10560: %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.cond10512 +while.end10514: ret void } @@ -93032,33 +93087,33 @@ entry: 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 %panic10561, label %ok10562 +panic10561: + call void @finch_panic(ptr @.str.6930, i64 293, ptr @.str.6931) unreachable -ok10555: +ok10562: %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 %panic10563, label %ok10564 +panic10563: + call void @finch_panic(ptr @.str.6932, i64 293, ptr @.str.6933) unreachable -ok10557: +ok10564: %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 %then10565, label %endif10567 +then10565: %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.6934, 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.6935, 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 @@ -93068,47 +93123,47 @@ then10558: 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 + 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 -endif10560: +endif10567: %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) + br i1 %t33, label %panic10568, label %ok10569 +panic10568: + call void @finch_panic(ptr @.str.6938, i64 296, ptr @.str.6939) unreachable -ok10562: +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 %panic10563, label %ok10564 -panic10563: - call void @finch_panic(ptr @.str.6936, i64 296, ptr @.str.6937) + br i1 %t36, label %panic10570, label %ok10571 +panic10570: + call void @finch_panic(ptr @.str.6940, i64 296, ptr @.str.6941) unreachable -ok10564: +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 %range10565, label %inrange10566 -range10565: - call void @finch_panic_index(ptr @.str.6938, i64 296, i64 %t38, i64 %t40) + br i1 %t41, label %range10572, label %inrange10573 +range10572: + call void @finch_panic_index(ptr @.str.6942, i64 296, i64 %t38, i64 %t40) unreachable -inrange10566: +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.6933, i64 13, i64 0 }, ptr %a48 + 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.6939, i64 8, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.6943, i64 8, i64 0 }, ptr %a53 call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) %t54 = load { ptr, i64, i64 }, ptr %a51 %t55 = load { ptr, i64, i64 }, ptr %a2 @@ -93117,7 +93172,7 @@ inrange10566: 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 + 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 @@ -93127,7 +93182,7 @@ inrange10566: 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 + 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 @@ -93145,74 +93200,74 @@ entry: 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 %panic10574, label %ok10575 +panic10574: + call void @finch_panic(ptr @.str.6946, i64 301, ptr @.str.6947) unreachable -ok10568: +ok10575: %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 %panic10576, label %ok10577 +panic10576: + call void @finch_panic(ptr @.str.6948, i64 301, ptr @.str.6949) unreachable -ok10570: +ok10577: %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.from10578 +logic.from10578: + br i1 %t15, label %logic.rhs10579, label %logic.end10580 +logic.rhs10579: %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 %panic10581, label %ok10582 +panic10581: + call void @finch_panic(ptr @.str.6950, i64 301, ptr @.str.6951) unreachable -ok10575: +ok10582: %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 %panic10583, label %ok10584 +panic10583: + call void @finch_panic(ptr @.str.6953, i64 301, ptr @.str.6954) unreachable -ok10577: +ok10584: %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 %panic10585, label %ok10586 +panic10585: + call void @finch_panic(ptr @.str.6955, i64 301, ptr @.str.6956) unreachable -ok10579: +ok10586: %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.6952, 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 ] + br label %logic.rend10587 +logic.rend10587: + br label %logic.end10580 +logic.end10580: + %t39 = phi i1 [ false, %logic.from10578 ], [ %t38, %logic.rend10587 ] ret i1 %t39 } @@ -93232,31 +93287,31 @@ entry: %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 %then10588, label %endif10590 +then10588: %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.6957, 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.6958, 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: +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 %panic10584, label %ok10585 -panic10584: - call void @finch_panic(ptr @.str.6955, i64 308, ptr @.str.6956) + br i1 %t22, label %panic10591, label %ok10592 +panic10591: + call void @finch_panic(ptr @.str.6959, i64 308, ptr @.str.6960) unreachable -ok10585: +ok10592: %t23 = getelementptr inbounds %S.json.Reader, ptr %t21, i32 0, i32 1 %t24 = load i64, ptr %t23 %t25 = add i64 %t24, %t20 @@ -93270,69 +93325,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.from10593 +logic.from10593: + br i1 %t3, label %logic.rhs10594, label %logic.end10595 +logic.rhs10594: %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.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: %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: +endif10599: %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.from10600 +logic.from10600: + br i1 %t12, label %logic.rhs10601, label %logic.end10602 +logic.rhs10601: %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.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: %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: +endif10606: %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.from10607 +logic.from10607: + br i1 %t22, label %logic.rhs10608, label %logic.end10609 +logic.rhs10608: %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.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: %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: +endif10613: ret i64 -1 } @@ -93346,8 +93401,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 %then10614, label %else10615 +then10614: %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t6 = load i64, ptr %a1 %t7 = trunc i64 %t6 to i8 @@ -93358,12 +93413,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 %endif10616 +else10615: %t12 = load i64, ptr %a1 %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then10610, label %else10611 -then10610: + br i1 %t13, label %then10617, label %else10618 +then10617: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t15 = load i64, ptr %a1 %t16 = sdiv i64 %t15, 64 @@ -93388,12 +93443,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 %endif10619 +else10618: %t32 = load i64, ptr %a1 %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then10613, label %else10614 -then10613: + br i1 %t33, label %then10620, label %else10621 +then10620: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t35 = load i64, ptr %a1 %t36 = sdiv i64 %t35, 4096 @@ -93431,8 +93486,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 %endif10622 +else10621: %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t63 = load i64, ptr %a1 %t64 = sdiv i64 %t63, 262144 @@ -93483,12 +93538,12 @@ 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 %endif10622 +endif10622: + br label %endif10619 +endif10619: + br label %endif10616 +endif10616: %t100 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } zeroinitializer, ptr %a101 store { ptr, i64, i64 } %t100, ptr %a102 @@ -93505,105 +93560,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.cond10623 +for.cond10623: %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.body10624, label %for.end10626 +for.body10624: %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic10620, label %ok10621 -panic10620: - call void @finch_panic(ptr @.str.6957, i64 348, ptr @.str.6958) - unreachable -ok10621: - %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic10622, label %ok10623 -panic10622: - call void @finch_panic(ptr @.str.6959, i64 348, ptr @.str.6960) - unreachable -ok10623: - %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 0 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sge i64 %t9, %t14 - br label %logic.from10624 -logic.from10624: - br i1 %t15, label %logic.end10626, label %logic.rhs10625 -logic.rhs10625: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic10627, label %ok10628 + br i1 %t7, label %panic10627, label %ok10628 panic10627: call void @finch_panic(ptr @.str.6961, i64 348, ptr @.str.6962) unreachable ok10628: - %t18 = getelementptr inbounds %S.json.Reader, ptr %t16, i32 0, i32 0 - %t19 = load ptr, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic10629, label %ok10630 + %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) unreachable ok10630: + %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: + %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) + unreachable +ok10635: + %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) + unreachable +ok10637: %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 %range10638, label %inrange10639 +range10638: + call void @finch_panic_index(ptr @.str.6969, i64 348, i64 %t22, i64 %t24) unreachable -inrange10632: +inrange10639: %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.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: %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.6970, 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: +endif10643: %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 %panic10644, label %ok10645 +panic10644: + call void @finch_panic(ptr @.str.6971, i64 351, ptr @.str.6972) unreachable -ok10638: +ok10645: %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 %panic10646, label %ok10647 +panic10646: + call void @finch_panic(ptr @.str.6973, i64 351, ptr @.str.6974) unreachable -ok10640: +ok10647: %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 %range10648, label %inrange10649 +range10648: + call void @finch_panic_index(ptr @.str.6975, i64 351, i64 %t43, i64 %t45) unreachable -inrange10642: +inrange10649: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 %t49 = load i8, ptr %t48 @@ -93612,22 +93667,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 %panic10650, label %ok10651 +panic10650: + call void @finch_panic(ptr @.str.6976, i64 352, ptr @.str.6977) unreachable -ok10644: +ok10651: %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.step10625 +for.step10625: %t57 = load i64, ptr %a3 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a3 - br label %for.cond10616 -for.end10619: + br label %for.cond10623 +for.end10626: %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 @@ -93678,11 +93733,11 @@ entry: 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 %panic10652, label %ok10653 +panic10652: + call void @finch_panic(ptr @.str.6978, i64 358, ptr @.str.6979) unreachable -ok10646: +ok10653: %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = add i64 %t5, 1 @@ -93690,108 +93745,108 @@ 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 %panic10654, label %ok10655 +panic10654: + call void @finch_panic(ptr @.str.6980, i64 360, ptr @.str.6981) unreachable -ok10648: +ok10655: %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.cond10656 +while.cond10656: + br label %while.body10657 +while.body10657: %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 %panic10659, label %ok10660 +panic10659: + call void @finch_panic(ptr @.str.6982, i64 362, ptr @.str.6983) unreachable -ok10653: +ok10660: %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 %panic10661, label %ok10662 +panic10661: + call void @finch_panic(ptr @.str.6984, i64 362, ptr @.str.6985) unreachable -ok10655: +ok10662: %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 %then10663, label %endif10665 +then10663: %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.6986, 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 + 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 -endif10658: +endif10665: %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) + br i1 %t35, label %panic10666, label %ok10667 +panic10666: + call void @finch_panic(ptr @.str.6988, i64 365, ptr @.str.6989) unreachable -ok10660: +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 %panic10661, label %ok10662 -panic10661: - call void @finch_panic(ptr @.str.6986, i64 365, ptr @.str.6987) + br i1 %t38, label %panic10668, label %ok10669 +panic10668: + call void @finch_panic(ptr @.str.6990, i64 365, ptr @.str.6991) unreachable -ok10662: +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 %range10663, label %inrange10664 -range10663: - call void @finch_panic_index(ptr @.str.6988, i64 365, i64 %t40, i64 %t42) + br i1 %t43, label %range10670, label %inrange10671 +range10670: + call void @finch_panic_index(ptr @.str.6992, i64 365, i64 %t40, i64 %t42) unreachable -inrange10664: +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 %then10665, label %endif10667 -then10665: + 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 %panic10668, label %ok10669 -panic10668: - call void @finch_panic(ptr @.str.6989, i64 367, ptr @.str.6990) + br i1 %t52, label %panic10675, label %ok10676 +panic10675: + call void @finch_panic(ptr @.str.6993, i64 367, ptr @.str.6994) unreachable -ok10669: +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 %panic10670, label %ok10671 -panic10670: - call void @finch_panic(ptr @.str.6992, i64 367, ptr @.str.6993) + br i1 %t59, label %panic10677, label %ok10678 +panic10677: + call void @finch_panic(ptr @.str.6996, i64 367, ptr @.str.6997) unreachable -ok10671: +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.6991, i64 367) + 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 @@ -93802,80 +93857,80 @@ ok10671: 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) + br i1 %t68, label %panic10679, label %ok10680 +panic10679: + call void @finch_panic(ptr @.str.6998, i64 368, ptr @.str.6999) unreachable -ok10673: +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.6996, i64 0, i64 0 }, ptr %a73 + 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 -endif10667: +endif10674: %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: + 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.6997, i64 55, i64 0 }, ptr %a84 + 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.6998, i64 1, i64 0 }, ptr %a89 + 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 -endif10676: +endif10683: %t92 = load i8, ptr %a47 %t93 = icmp ne i8 %t92, 92 - br i1 %t93, label %then10677, label %endif10679 -then10677: + br i1 %t93, label %then10684, label %endif10686 +then10684: %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) + br i1 %t95, label %panic10687, label %ok10688 +panic10687: + call void @finch_panic(ptr @.str.7003, i64 375, ptr @.str.7004) unreachable -ok10681: +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.cond10649 -endif10679: + 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 %panic10682, label %ok10683 -panic10682: - call void @finch_panic(ptr @.str.7001, i64 378, ptr @.str.7002) + br i1 %t101, label %panic10689, label %ok10690 +panic10689: + call void @finch_panic(ptr @.str.7005, i64 378, ptr @.str.7006) unreachable -ok10683: +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 %panic10684, label %ok10685 -panic10684: - call void @finch_panic(ptr @.str.7004, i64 378, ptr @.str.7005) + br i1 %t108, label %panic10691, label %ok10692 +panic10691: + call void @finch_panic(ptr @.str.7008, i64 378, ptr @.str.7009) unreachable -ok10685: +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.7003, i64 378) + 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 @@ -93886,11 +93941,11 @@ ok10685: 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) + br i1 %t117, label %panic10693, label %ok10694 +panic10693: + call void @finch_panic(ptr @.str.7010, i64 379, ptr @.str.7011) unreachable -ok10687: +ok10694: %t118 = getelementptr inbounds %S.json.Reader, ptr %t116, i32 0, i32 1 %t119 = load i64, ptr %t118 %t120 = add i64 %t119, 1 @@ -93900,61 +93955,61 @@ ok10687: 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) + br i1 %t125, label %panic10695, label %ok10696 +panic10695: + call void @finch_panic(ptr @.str.7012, i64 381, ptr @.str.7013) unreachable -ok10689: +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 %then10690, label %else10691 -then10690: + 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.7010, i64 1, i64 0 }, ptr %t135 + store { ptr, i64, i64 } { ptr @.str.7014, i64 1, i64 0 }, ptr %t135 store i64 %t133, ptr %t131 - br label %endif10692 -else10691: + br label %endif10699 +else10698: %t136 = load i8, ptr %a123 %t137 = icmp eq i8 %t136, 116 - br i1 %t137, label %then10693, label %else10694 -then10693: + 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.7011, i64 1, i64 0 }, ptr %t142 + store { ptr, i64, i64 } { ptr @.str.7015, i64 1, i64 0 }, ptr %t142 store i64 %t140, ptr %t138 - br label %endif10695 -else10694: + br label %endif10702 +else10701: %t143 = load i8, ptr %a123 %t144 = icmp eq i8 %t143, 114 - br i1 %t144, label %then10696, label %else10697 -then10696: + 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.7012, i64 1, i64 0 }, ptr %t149 + store { ptr, i64, i64 } { ptr @.str.7016, i64 1, i64 0 }, ptr %t149 store i64 %t147, ptr %t145 - br label %endif10698 -else10697: + br label %endif10705 +else10704: %t150 = load i8, ptr %a123 %t151 = icmp eq i8 %t150, 98 - br i1 %t151, label %then10699, label %else10700 -then10699: + 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 @@ -93964,12 +94019,12 @@ then10699: %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: + br label %endif10708 +else10707: %t158 = load i8, ptr %a123 %t159 = icmp eq i8 %t158, 102 - br i1 %t159, label %then10702, label %else10703 -then10702: + 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 @@ -93979,34 +94034,34 @@ then10702: %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: + br label %endif10711 +else10710: %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: + 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.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: + 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.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: + 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) @@ -94018,57 +94073,57 @@ then10713: %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: + br label %endif10722 +else10721: %t182 = load i8, ptr %a123 %t183 = icmp eq i8 %t182, 117 - br i1 %t183, label %then10716, label %else10717 -then10716: + 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.failed10719, label %try.ok10720 -try.failed10719: + 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.ok10720: +try.ok10727: 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: + 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.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: + 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.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: + %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 %panic10732, label %ok10733 -panic10732: - call void @finch_panic(ptr @.str.7014, i64 398, ptr @.str.7015) + br i1 %t201, label %panic10739, label %ok10740 +panic10739: + call void @finch_panic(ptr @.str.7018, i64 398, ptr @.str.7019) unreachable -ok10733: +ok10740: %t202 = getelementptr inbounds %S.json.Reader, ptr %t200, i32 0, i32 1 %t203 = load i64, ptr %t202 %t204 = add i64 %t203, 2 @@ -94079,11 +94134,11 @@ ok10733: %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: + 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.ok10735: +try.ok10742: store i64 %t210, ptr %a212 %t213 = load i64, ptr %a191 %t214 = sub i64 %t213, 55296 @@ -94093,8 +94148,8 @@ try.ok10735: %t218 = sub i64 %t217, 56320 %t219 = add i64 %t216, %t218 store i64 %t219, ptr %a191 - br label %endif10731 -endif10731: + 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) @@ -94105,17 +94160,17 @@ endif10731: %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: + 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.7016, i64 22, i64 0 }, ptr %a231 + 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.7017, i64 12, i64 0 }, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.7021, i64 12, i64 0 }, ptr %a236 call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) %t237 = load { ptr, i64, i64 }, ptr %a234 %t238 = load ptr, ptr %a1 @@ -94125,35 +94180,35 @@ else10717: 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 + 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 -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: +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 %panic10736, label %ok10737 -panic10736: - call void @finch_panic(ptr @.str.7019, i64 406, ptr @.str.7020) + br i1 %t250, label %panic10743, label %ok10744 +panic10743: + call void @finch_panic(ptr @.str.7023, i64 406, ptr @.str.7024) unreachable -ok10737: +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.cond10649 + br label %while.cond10656 } define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %p0) { @@ -94170,356 +94225,356 @@ entry: 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 %panic10745, label %ok10746 +panic10745: + call void @finch_panic(ptr @.str.7025, i64 411, ptr @.str.7026) unreachable -ok10739: +ok10746: %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 %then10747, label %endif10749 +then10747: %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 %panic10750, label %ok10751 +panic10750: + call void @finch_panic(ptr @.str.7027, i64 413, ptr @.str.7028) unreachable -ok10744: +ok10751: %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 %endif10749 +endif10749: + br label %while.cond10752 +while.cond10752: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic10748, label %ok10749 -panic10748: - call void @finch_panic(ptr @.str.7025, i64 415, ptr @.str.7026) - unreachable -ok10749: - %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = load ptr, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic10750, label %ok10751 -panic10750: - call void @finch_panic(ptr @.str.7027, i64 415, ptr @.str.7028) - unreachable -ok10751: - %t21 = getelementptr inbounds %S.json.Reader, ptr %t19, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp slt i64 %t18, %t23 - br label %logic.from10752 -logic.from10752: - br i1 %t24, label %logic.rhs10753, label %logic.end10754 -logic.rhs10753: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic10755, label %ok10756 + br i1 %t16, label %panic10755, label %ok10756 panic10755: call void @finch_panic(ptr @.str.7029, i64 415, ptr @.str.7030) unreachable ok10756: - %t27 = getelementptr inbounds %S.json.Reader, ptr %t25, i32 0, i32 0 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic10757, label %ok10758 + %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) unreachable ok10758: + %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: + %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) + unreachable +ok10763: + %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) + unreachable +ok10765: %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 %range10766, label %inrange10767 +range10766: + call void @finch_panic_index(ptr @.str.7037, i64 415, i64 %t31, i64 %t33) unreachable -inrange10760: +inrange10767: %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.from10768 +logic.from10768: + br i1 %t38, label %logic.rhs10769, label %logic.end10770 +logic.rhs10769: %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 %panic10771, label %ok10772 +panic10771: + call void @finch_panic(ptr @.str.7038, i64 415, ptr @.str.7039) unreachable -ok10765: +ok10772: %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 %panic10773, label %ok10774 +panic10773: + call void @finch_panic(ptr @.str.7040, i64 415, ptr @.str.7041) unreachable -ok10767: +ok10774: %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 %range10775, label %inrange10776 +range10775: + call void @finch_panic_index(ptr @.str.7042, i64 415, i64 %t45, i64 %t47) unreachable -inrange10769: +inrange10776: %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.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: %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 %panic10781, label %ok10782 +panic10781: + call void @finch_panic(ptr @.str.7043, i64 415, ptr @.str.7044) unreachable -ok10775: +ok10782: %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 %panic10783, label %ok10784 +panic10783: + call void @finch_panic(ptr @.str.7045, i64 415, ptr @.str.7046) unreachable -ok10777: +ok10784: %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 %range10785, label %inrange10786 +range10785: + call void @finch_panic_index(ptr @.str.7047, i64 415, i64 %t60, i64 %t62) unreachable -inrange10779: +inrange10786: %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.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: %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 %panic10791, label %ok10792 +panic10791: + call void @finch_panic(ptr @.str.7048, i64 415, ptr @.str.7049) unreachable -ok10785: +ok10792: %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 %panic10793, label %ok10794 +panic10793: + call void @finch_panic(ptr @.str.7050, i64 415, ptr @.str.7051) unreachable -ok10787: +ok10794: %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 %range10795, label %inrange10796 +range10795: + call void @finch_panic_index(ptr @.str.7052, i64 415, i64 %t75, i64 %t77) unreachable -inrange10789: +inrange10796: %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.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: %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 %panic10801, label %ok10802 +panic10801: + call void @finch_panic(ptr @.str.7053, i64 415, ptr @.str.7054) unreachable -ok10795: +ok10802: %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 %panic10803, label %ok10804 +panic10803: + call void @finch_panic(ptr @.str.7055, i64 415, ptr @.str.7056) unreachable -ok10797: +ok10804: %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 %range10805, label %inrange10806 +range10805: + call void @finch_panic_index(ptr @.str.7057, i64 415, i64 %t90, i64 %t92) unreachable -inrange10799: +inrange10806: %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.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: %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 %panic10811, label %ok10812 +panic10811: + call void @finch_panic(ptr @.str.7058, i64 415, ptr @.str.7059) unreachable -ok10805: +ok10812: %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 %panic10813, label %ok10814 +panic10813: + call void @finch_panic(ptr @.str.7060, i64 415, ptr @.str.7061) unreachable -ok10807: +ok10814: %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 %range10815, label %inrange10816 +range10815: + call void @finch_panic_index(ptr @.str.7062, i64 415, i64 %t105, i64 %t107) unreachable -inrange10809: +inrange10816: %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.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: %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 %panic10821, label %ok10822 +panic10821: + call void @finch_panic(ptr @.str.7063, i64 415, ptr @.str.7064) unreachable -ok10815: +ok10822: %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 %panic10823, label %ok10824 +panic10823: + call void @finch_panic(ptr @.str.7065, i64 415, ptr @.str.7066) unreachable -ok10817: +ok10824: %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 %range10825, label %inrange10826 +range10825: + call void @finch_panic_index(ptr @.str.7067, i64 415, i64 %t120, i64 %t122) unreachable -inrange10819: +inrange10826: %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.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: %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 %panic10829, label %ok10830 +panic10829: + call void @finch_panic(ptr @.str.7068, i64 416, ptr @.str.7069) unreachable -ok10823: +ok10830: %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.cond10752 +while.end10754: %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 %panic10831, label %ok10832 +panic10831: + call void @finch_panic(ptr @.str.7070, i64 418, ptr @.str.7071) unreachable -ok10825: +ok10832: %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 %panic10833, label %ok10834 +panic10833: + call void @finch_panic(ptr @.str.7073, i64 418, ptr @.str.7074) unreachable -ok10827: +ok10834: %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.7072, i64 418) %t146 = load { ptr, i64, i64 }, ptr %a140 store { ptr, i64, i64 } zeroinitializer, ptr %a147 store double 0.0, ptr %a148 @@ -94528,24 +94583,24 @@ ok10827: %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: + 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 %panic10830, label %ok10831 -panic10830: - call void @finch_panic(ptr @.str.7071, i64 419, ptr @.str.7072) + br i1 %t157, label %panic10837, label %ok10838 +panic10837: + call void @finch_panic(ptr @.str.7075, i64 419, ptr @.str.7076) unreachable -ok10831: +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.7073, i64 8, i64 0 }) + %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.ok10829: +or.ok10836: store double %t153, ptr %a162 %t163 = load double, ptr %a162 %t164 = call %S.json.Json @finch.json.new_number(double %t163) @@ -94572,44 +94627,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 %panic10839, label %ok10840 +panic10839: + call void @finch_panic(ptr @.str.7078, i64 428, ptr @.str.7079) unreachable -ok10833: +ok10840: %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 %panic10841, label %ok10842 +panic10841: + call void @finch_panic(ptr @.str.7080, i64 428, ptr @.str.7081) unreachable -ok10835: +ok10842: %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 %then10843, label %endif10845 +then10843: %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.7082, 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: +endif10845: %t19 = load i8, ptr %a5 %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then10839, label %endif10841 -then10839: + br i1 %t20, label %then10846, label %endif10848 +then10846: %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 %panic10849, label %ok10850 +panic10849: + call void @finch_panic(ptr @.str.7083, i64 433, ptr @.str.7084) unreachable -ok10843: +ok10850: %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 %t26 = load i64, ptr %t25 %t27 = add i64 %t26, 1 @@ -94619,15 +94674,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 %then10851, label %endif10853 +then10851: %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 %panic10854, label %ok10855 +panic10854: + call void @finch_panic(ptr @.str.7085, i64 436, ptr @.str.7086) unreachable -ok10848: +ok10855: %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = add i64 %t35, 1 @@ -94636,54 +94691,54 @@ 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: +endif10853: + br label %while.cond10856 +while.cond10856: + br label %while.body10857 +while.body10857: %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 %then10859, label %endif10861 +then10859: %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.7087, i64 15, i64 0 }) %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif10854: +endif10861: %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.failed10862, label %try.ok10863 +try.failed10862: %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.ok10863: 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 %then10864, label %endif10866 +then10864: %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.7088, i64 3, i64 0 }) %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif10859: +endif10866: %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 %panic10867, label %ok10868 +panic10867: + call void @finch_panic(ptr @.str.7089, i64 449, ptr @.str.7090) unreachable -ok10861: +ok10868: %t64 = getelementptr inbounds %S.json.Reader, ptr %t62, i32 0, i32 1 %t65 = load i64, ptr %t64 %t66 = add i64 %t65, 1 @@ -94694,11 +94749,11 @@ 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.failed10869, label %try.ok10870 +try.failed10869: %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.ok10870: store %S.json.Json %t72, ptr %a74 %t75 = load { ptr, i64, i64 }, ptr %a54 %t76 = load %S.json.Json, ptr %a74 @@ -94708,33 +94763,33 @@ 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 %then10871, label %endif10873 +then10871: %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 %panic10874, label %ok10875 +panic10874: + call void @finch_panic(ptr @.str.7091, i64 454, ptr @.str.7092) unreachable -ok10868: +ok10875: %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: + br label %while.cond10856 +endif10873: %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 %then10876, label %endif10878 +then10876: %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 %panic10879, label %ok10880 +panic10879: + call void @finch_panic(ptr @.str.7093, i64 458, ptr @.str.7094) unreachable -ok10873: +ok10880: %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 %t92 = load i64, ptr %t91 %t93 = add i64 %t92, 1 @@ -94743,25 +94798,25 @@ ok10873: %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: +endif10878: %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.7095, i64 10, i64 0 }) %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif10841: +endif10848: %t100 = load i8, ptr %a5 %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then10874, label %endif10876 -then10874: + br i1 %t101, label %then10881, label %endif10883 +then10881: %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 %panic10884, label %ok10885 +panic10884: + call void @finch_panic(ptr @.str.7096, i64 466, ptr @.str.7097) unreachable -ok10878: +ok10885: %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 1 %t107 = load i64, ptr %t106 %t108 = add i64 %t107, 1 @@ -94771,15 +94826,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 %then10886, label %endif10888 +then10886: %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 %panic10889, label %ok10890 +panic10889: + call void @finch_panic(ptr @.str.7098, i64 469, ptr @.str.7099) unreachable -ok10883: +ok10890: %t115 = getelementptr inbounds %S.json.Reader, ptr %t113, i32 0, i32 1 %t116 = load i64, ptr %t115 %t117 = add i64 %t116, 1 @@ -94788,22 +94843,22 @@ 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: +endif10888: + br label %while.cond10891 +while.cond10891: + br label %while.body10892 +while.body10892: %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.failed10894, label %try.ok10895 +try.failed10894: %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.ok10895: 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) @@ -94812,33 +94867,33 @@ 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 %then10896, label %endif10898 +then10896: %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 %panic10899, label %ok10900 +panic10899: + call void @finch_panic(ptr @.str.7100, i64 477, ptr @.str.7101) unreachable -ok10893: +ok10900: %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: + br label %while.cond10891 +endif10898: %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 %then10901, label %endif10903 +then10901: %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 %panic10904, label %ok10905 +panic10904: + call void @finch_panic(ptr @.str.7102, i64 481, ptr @.str.7103) unreachable -ok10898: +ok10905: %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 %t145 = load i64, ptr %t144 %t146 = add i64 %t145, 1 @@ -94847,134 +94902,134 @@ ok10898: %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: +endif10903: %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.7104, i64 10, i64 0 }) %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif10876: +endif10883: %t153 = load i8, ptr %a5 %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then10899, label %endif10901 -then10899: + br i1 %t154, label %then10906, label %endif10908 +then10906: %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.failed10909, label %try.ok10910 +try.failed10909: %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.ok10910: store { ptr, i64, i64 } %t160, ptr %a162 %t163 = load { ptr, i64, i64 }, ptr %a162 %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif10901: +endif10908: %t167 = load i8, ptr %a5 %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then10904, label %endif10906 -then10904: + br i1 %t168, label %then10911, label %endif10913 +then10911: %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.7105, 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.failed10914, label %try.ok10915 +try.failed10914: %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.ok10915: %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: +endif10913: %t178 = load i8, ptr %a5 %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then10909, label %endif10911 -then10909: + br i1 %t179, label %then10916, label %endif10918 +then10916: %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.7106, 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.failed10919, label %try.ok10920 +try.failed10919: %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.ok10920: %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: +endif10918: %t189 = load i8, ptr %a5 %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then10914, label %endif10916 -then10914: + br i1 %t190, label %then10921, label %endif10923 +then10921: %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.7107, 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.failed10924, label %try.ok10925 +try.failed10924: %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.ok10925: %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: +endif10923: %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.from10926 +logic.from10926: + br i1 %t201, label %logic.end10928, label %logic.rhs10927 +logic.rhs10927: %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.from10929 +logic.from10929: + br i1 %t203, label %logic.rhs10930, label %logic.end10931 +logic.rhs10930: %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.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: %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.failed10937, label %try.ok10938 +try.failed10937: %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.ok10938: %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: +endif10936: %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.7108, 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 } @@ -95000,11 +95055,11 @@ 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.failed10939, label %try.ok10940 +try.failed10939: %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.ok10940: 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 @@ -95013,12 +95068,12 @@ 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 %then10941, label %endif10943 +then10941: + %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7109, i64 19, i64 0 }) %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif10936: +endif10943: %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) diff --git a/docs/en/for-beginners.md b/docs/en/for-beginners.md index 179f48e..60f32b4 100644 --- a/docs/en/for-beginners.md +++ b/docs/en/for-beginners.md @@ -63,8 +63,7 @@ these lines one by one, pressing **Enter** after each: git clone https://github.com/Nexoniarz/Finch.git cd Finch nix-shell -cmake -S . -B build -G Ninja -ninja -C build +bootstrap/build.sh ``` If the last line finishes without the word `error`, Finch is ready. @@ -77,7 +76,7 @@ To check it works, type: ./build/finch version ``` -You should see something like `finch 2.4.0`. +You should see something like `Finch 2.4.0`. --- diff --git a/docs/en/for-technicians.md b/docs/en/for-technicians.md index a9ef2fe..029b470 100644 --- a/docs/en/for-technicians.md +++ b/docs/en/for-technicians.md @@ -63,78 +63,40 @@ messages that tell you how to fix the problem. ## 2. Installing -Finch runs on **Linux** (x86-64 and ARM64), **macOS** (Apple Silicon and Intel) and **Windows** (x86-64), -and is built with **LLVM 21**. Each [release](https://github.com/Nexoniarz/Finch/releases) has a ready -`finch` for Windows, Linux x86-64, Linux ARM64 and macOS ARM64. +The Finch compiler is written in Finch (see the [engineers' guide](for-engineers.md)). It runs on **Linux** +(x86-64 and ARM64) and builds programs for **Linux, Windows and macOS**. It needs **clang 21** and **libclang** +(LLVM 21) to read C headers and to compile its output. -### Windows +The compiler does not run on macOS or Windows yet; it needs a seed made with that system's headers +([bootstrap/README.md](../../bootstrap/README.md) says why). Until then, build your Windows and macOS programs from Linux +with `--target` (below), or use the older C++ compiler from the `before-bootstrap` branch. -1. Download **`finch-windows-x64.zip`** from the [releases](https://github.com/Nexoniarz/Finch/releases) - and unpack it, for example to `C:\finch`. It contains `finch.exe` and `libclang.dll`. -2. Install **LLVM 21** (`LLVM-21.x.x-win64.exe` from the - [LLVM releases](https://github.com/llvm/llvm-project/releases)) and tick *Add LLVM to the system PATH*. - Finch uses its `clang` to link programs. -3. Install **Visual Studio Build Tools 2022** with *Desktop development with C++*: it provides the Windows - libraries every program is linked with. -4. Add `C:\finch` to your PATH, open a new terminal, and run `finch version`. +### Option A: a ready build (Linux) -Programs are normal `.exe` files. To build from source on Windows instead, follow `.github/workflows/ci.yml` -(Visual Studio 2022 + the `clang+llvm-21.x-x86_64-pc-windows-msvc` package from LLVM's releases). +Download `finch-linux-x64.tar.gz` or `finch-linux-arm64.tar.gz` from the +[releases](https://github.com/Nexoniarz/Finch/releases) and unpack it. Keep `runtime/` and `std/` next to the `finch` file +(or install it, below). You also need `clang` 21 and its libclang library: -### macOS +| Distribution | Packages | +|---|---| +| Debian / Ubuntu | `clang-21 libclang-21-dev` from [apt.llvm.org](https://apt.llvm.org), `pkg-config` | +| Fedora | `clang clang-devel pkgconf` | +| Arch | `clang pkgconf` | +| Nix | `nix-shell` in the repository gives all of it | -```sh -brew install llvm@21 # Finch's LLVM; programs are linked with Apple's clang -``` - -Then either unpack **`finch-macos-arm64.tar.gz`** from the releases (it uses Homebrew's `llvm@21`), -or build it yourself (Xcode command line tools: `xcode-select --install`): - -```sh -git clone https://github.com/Nexoniarz/Finch.git && cd Finch -cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR="$(brew --prefix llvm@21)/lib/cmake/llvm" -ninja -C build -./build/finch version -``` - -Apple frameworks link with `link "Cocoa.framework"` (`-framework Cocoa`), and their headers import as usual: -`import "OpenGL/gl.h"`. - -### Linux - -The ready `finch-linux-x64.tar.gz` / `finch-linux-arm64.tar.gz` need LLVM 21's libraries -(Debian/Ubuntu: `libllvm21 libclang1-21` from [apt.llvm.org](https://apt.llvm.org)) and a C compiler (`cc`). -Building it yourself works the same on x86-64 and ARM64 (Raspberry Pi 4/5, Graviton, …). -Other LLVM versions will likely fail to compile, because LLVM's C++ API changes between releases. - -### Option A: Nix (recommended, nothing to install by hand) +### Option B: build it yourself ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # downloads LLVM, libclang, clang, cmake, ninja, pkg-config -cmake -S . -B build -G Ninja -ninja -C build -./build/finch version # finch 2.4.0 (LLVM 21.x) +nix-shell # clang, libclang, pkg-config (or install them with your distribution) +bootstrap/build.sh # build/finch +./build/finch version ``` -### Option B: your distribution's packages - -You need: a C/C++ compiler, CMake ≥ 3.20, Ninja (or Make), LLVM 21 development files, -libclang 21 development files, and optionally `pkg-config`. - -| Distribution | Packages (names can differ slightly by version) | -|---|---| -| Debian / Ubuntu | `build-essential cmake ninja-build pkg-config llvm-21-dev libclang-21-dev` | -| Fedora | `gcc-c++ cmake ninja-build pkgconf llvm-devel clang-devel` | -| Arch | `base-devel cmake ninja pkgconf llvm clang` | - -These have not been tested; if CMake cannot find LLVM, point it there: - -```sh -cmake -S . -B build -G Ninja -DLLVM_DIR=/usr/lib/llvm-21/lib/cmake/llvm -ninja -C build -``` +`bootstrap/build.sh` compiles the seed (`bootstrap/.ll`, the compiler's own LLVM IR) into a first compiler, builds +`src/` with it, builds `src/` again with the result and checks the two are identical. If libclang isn't where the linker +looks, tell it: `FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" bootstrap/build.sh`. ### Building for another system @@ -160,12 +122,13 @@ On Nix the compilers are `pkgsCross.mingwW64.buildPackages.gcc` and ### Putting `finch` on your PATH (optional) ```sh -sudo cp build/finch /usr/local/bin/ +sudo bootstrap/install.sh # /usr/local/bin/finch, and /usr/local/share/finch/{runtime,std} +bootstrap/install.sh ~/.local # or into your own folder finch version ``` -At run time Finch needs a C compiler (`cc`). It is used to link programs, and once to build -Finch's small runtime library, which is kept in `~/.cache/finch`. Set `CC` to use a different one. +At run time Finch needs `clang` (it compiles each program's IR and links it). The small runtime library is built once and +kept in `~/.cache/finch`. `FINCH_CC` names a different compiler to link with; `FINCH_PATH` adds folders to look for modules in. --- @@ -938,28 +901,27 @@ Visual Studio debugger and WinDbg read. ``` Finch/ -├── src/ the compiler (C++) -├── runtime/ finch_rt.c: the small runtime (text, arrays, input, files) -├── boot/ the Finch compiler written in Finch (see the engineers' guide) +├── src/ the compiler, in Finch (lexer, parser, gen: LLVM IR as text, cimport: libclang, lsp, main ...) +├── std/ the standard library, in Finch: json, path, time, proc +├── runtime/ finch_rt.c: the small runtime (text, arrays, maps, input, files) +├── bootstrap/ build.sh, install.sh and the seeds (the compiler's own IR, one per system) ├── examples/ hello, tour, types, structs, todo, guess, c_import, window, opengl, vulkan, raylib, llvm ├── tests/ -│ ├── run/ programs + the exact output they must print (.out), input (.in) -│ ├── fail/ programs that must fail, with the expected error in line 1 +│ ├── run/ new/ programs + the exact output they must print (.out), input (.in) +│ ├── fail/ new/fail/ programs that must fail, with the expected error in line 1 │ ├── run.sh the test runner (MEMCHECK=1 also checks memory with valgrind) -│ └── boot.sh builds the self-hosted compiler with itself and compares +│ ├── cross.sh every test built for Windows / ARM64 and run under Wine / QEMU +│ └── lsp_test.py the language server, talked to like an editor does ├── editors/ the VS Code extension (vscode/), Kate highlighting and LSP setup (kate/) ├── docs/ this documentation (en, pl), including the cheat sheet -├── shell.nix the Nix development environment -└── CMakeLists.txt +└── shell.nix the Nix development environment ``` ```sh -tests/run.sh # → 74 passed, 0 failed +tests/run.sh # programs, refusals, -g builds, a shared library, the language server MEMCHECK=1 tests/run.sh # the same under valgrind: no leaks, no bad memory access -tests/boot.sh # the self-hosting check (needs clang) tests/cross.sh windows # every test built for Windows and run with Wine tests/cross.sh arm64 # every test built for ARM64 Linux and run with QEMU -python3 tests/lsp_test.py # the language server ``` --- diff --git a/docs/pl/dla-poczatkujacych.md b/docs/pl/dla-poczatkujacych.md index 6718f54..a0d5355 100644 --- a/docs/pl/dla-poczatkujacych.md +++ b/docs/pl/dla-poczatkujacych.md @@ -63,8 +63,7 @@ i wpisz te linijki po kolei, naciskając **Enter** po każdej: git clone https://github.com/Nexoniarz/Finch.git cd Finch nix-shell -cmake -S . -B build -G Ninja -ninja -C build +bootstrap/build.sh ``` Jeśli ostatnia linijka skończy się bez słowa `error`, Finch jest gotowy. diff --git a/docs/pl/dla-technikow.md b/docs/pl/dla-technikow.md index b2a79be..5a999da 100644 --- a/docs/pl/dla-technikow.md +++ b/docs/pl/dla-technikow.md @@ -63,77 +63,40 @@ i komunikaty błędów, które mówią, jak problem naprawić. ## 2. Instalacja -Finch działa na **Linuksie** (x86-64 i ARM64), **macOS** (Apple Silicon i Intel) i **Windowsie** (x86-64), -i jest budowany z **LLVM 21**. Każde [wydanie](https://github.com/Nexoniarz/Finch/releases) ma gotowy -`finch` dla Windowsa, Linuksa x86-64, Linuksa ARM64 i macOS ARM64. +Kompilator Fincha jest napisany w Finchu (zobacz [przewodnik dla inżynierów](dla-inzynierow.md)). Działa na **Linuksie** +(x86-64 i ARM64) i buduje programy dla **Linuksa, Windowsa i macOS**. Potrzebuje **clanga 21** i **libclang** (LLVM 21), +żeby czytać nagłówki C i kompilować to, co wygeneruje. -### Windows +Kompilator nie działa jeszcze na macOS ani Windowsie: potrzebuje ziarna zrobionego z nagłówkami tego systemu +([bootstrap/README.md](../../bootstrap/README.md) tłumaczy dlaczego). Do tego czasu programy na Windows i macOS buduj z Linuksa +przez `--target` (niżej) albo użyj starszego kompilatora w C++ z gałęzi `before-bootstrap`. -1. Pobierz **`finch-windows-x64.zip`** z [wydań](https://github.com/Nexoniarz/Finch/releases) i rozpakuj, - np. do `C:\finch`. W środku są `finch.exe` i `libclang.dll`. -2. Zainstaluj **LLVM 21** (`LLVM-21.x.x-win64.exe` z [wydań LLVM](https://github.com/llvm/llvm-project/releases)) - i zaznacz *Add LLVM to the system PATH*. Finch używa jego `clang` do linkowania programów. -3. Zainstaluj **Visual Studio Build Tools 2022** z pakietem *Desktop development with C++*: dostarcza biblioteki - Windowsa, z którymi linkowany jest każdy program. -4. Dodaj `C:\finch` do PATH, otwórz nowy terminal i wpisz `finch version`. +### Opcja A: gotowa wersja (Linux) -Programy to zwykłe pliki `.exe`. Żeby zbudować Fincha ze źródeł na Windowsie, idź za `.github/workflows/ci.yml` -(Visual Studio 2022 + pakiet `clang+llvm-21.x-x86_64-pc-windows-msvc` z wydań LLVM). +Pobierz `finch-linux-x64.tar.gz` albo `finch-linux-arm64.tar.gz` z [wydań](https://github.com/Nexoniarz/Finch/releases) +i rozpakuj. Zostaw `runtime/` i `std/` obok pliku `finch` (albo zainstaluj, niżej). Potrzebny jest też `clang` 21 +z biblioteką libclang: -### macOS +| Dystrybucja | Pakiety | +|---|---| +| Debian / Ubuntu | `clang-21 libclang-21-dev` z [apt.llvm.org](https://apt.llvm.org), `pkg-config` | +| Fedora | `clang clang-devel pkgconf` | +| Arch | `clang pkgconf` | +| Nix | `nix-shell` w repozytorium daje wszystko | -```sh -brew install llvm@21 # LLVM dla Fincha; programy linkuje clang od Apple -``` - -Potem rozpakuj **`finch-macos-arm64.tar.gz`** z wydań (korzysta z `llvm@21` z Homebrew) -albo zbuduj go sam (narzędzia wiersza poleceń Xcode: `xcode-select --install`): - -```sh -git clone https://github.com/Nexoniarz/Finch.git && cd Finch -cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR="$(brew --prefix llvm@21)/lib/cmake/llvm" -ninja -C build -./build/finch version -``` - -Frameworki Apple linkuje się przez `link "Cocoa.framework"` (`-framework Cocoa`), a ich nagłówki importuje -się normalnie: `import "OpenGL/gl.h"`. - -### Linux - -Gotowe `finch-linux-x64.tar.gz` / `finch-linux-arm64.tar.gz` potrzebują bibliotek LLVM 21 -(Debian/Ubuntu: `libllvm21 libclang1-21` z [apt.llvm.org](https://apt.llvm.org)) i kompilatora C (`cc`). -Samodzielne budowanie wygląda tak samo na x86-64 i ARM64 (Raspberry Pi 4/5, Graviton, …). -Z innymi wersjami LLVM Finch prawdopodobnie się nie skompiluje, bo API C++ LLVM zmienia się między wydaniami. - -### Opcja A: Nix (zalecana, nic nie instalujesz ręcznie) +### Opcja B: zbuduj sam ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # pobiera LLVM, libclang, clang, cmake, ninja, pkg-config -cmake -S . -B build -G Ninja -ninja -C build -./build/finch version # finch 2.4.0 (LLVM 21.x) +nix-shell # clang, libclang, pkg-config (albo zainstaluj z dystrybucji) +bootstrap/build.sh # build/finch +./build/finch version ``` -### Opcja B: pakiety z twojej dystrybucji - -Potrzebujesz: kompilatora C/C++, CMake ≥ 3.20, Ninja (albo Make), plików deweloperskich LLVM 21 -i libclang 21, a opcjonalnie `pkg-config`. - -| Dystrybucja | Pakiety (nazwy mogą się nieco różnić zależnie od wersji) | -|---|---| -| Debian / Ubuntu | `build-essential cmake ninja-build pkg-config llvm-21-dev libclang-21-dev` | -| Fedora | `gcc-c++ cmake ninja-build pkgconf llvm-devel clang-devel` | -| Arch | `base-devel cmake ninja pkgconf llvm clang` | - -Ta opcja nie była testowana. Jeśli CMake nie znajduje LLVM, wskaż mu katalog: - -```sh -cmake -S . -B build -G Ninja -DLLVM_DIR=/usr/lib/llvm-21/lib/cmake/llvm -ninja -C build -``` +`bootstrap/build.sh` kompiluje ziarno (`bootstrap/.ll`, własny LLVM IR kompilatora) do pierwszego kompilatora, +buduje nim `src/`, buduje `src/` jeszcze raz wynikiem i sprawdza, że oba są identyczne. Jeśli libclang nie leży tam, gdzie +szuka linker: `FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" bootstrap/build.sh`. ### Budowanie na inny system @@ -159,13 +122,14 @@ Na Niksie te kompilatory to `pkgsCross.mingwW64.buildPackages.gcc` i ### Dodanie `finch` do PATH (opcjonalnie) ```sh -sudo cp build/finch /usr/local/bin/ +sudo bootstrap/install.sh # /usr/local/bin/finch oraz /usr/local/share/finch/{runtime,std} +bootstrap/install.sh ~/.local # albo do własnego katalogu finch version ``` -Podczas pracy Finch potrzebuje kompilatora C (`cc`). Używa go do linkowania programów i jednorazowo -do zbudowania swojej małej biblioteki uruchomieniowej, którą trzyma w `~/.cache/finch`. -Inny kompilator wskażesz zmienną `CC`. +Podczas działania Finch potrzebuje `clanga` (kompiluje IR każdego programu i go linkuje). Mała biblioteka uruchomieniowa +budowana jest raz i trzymana w `~/.cache/finch`. `FINCH_CC` wskazuje inny kompilator do linkowania; `FINCH_PATH` dodaje +katalogi, w których szukać modułów. --- @@ -941,28 +905,27 @@ CodeView, który czyta debugger Visual Studio i WinDbg. ``` Finch/ -├── src/ kompilator (C++) -├── runtime/ finch_rt.c: mała biblioteka uruchomieniowa (teksty, tablice, wejście, pliki) -├── boot/ kompilator Fincha napisany w Finchu (zobacz przewodnik dla inżynierów) +├── src/ kompilator, w Finchu (lekser, parser, gen: LLVM IR jako tekst, cimport: libclang, lsp, main ...) +├── std/ biblioteka standardowa, w Finchu: json, path, time, proc +├── runtime/ finch_rt.c: mała biblioteka uruchomieniowa (teksty, tablice, mapy, wejście, pliki) +├── bootstrap/ build.sh, install.sh i ziarna (własny IR kompilatora, po jednym na system) ├── examples/ hello, tour, types, structs, todo, guess, c_import, window, opengl, vulkan, raylib, llvm ├── tests/ -│ ├── run/ programy + dokładny wynik (.out) i wejście (.in) -│ ├── fail/ programy, które muszą się nie udać, z oczekiwanym błędem w 1. linijce +│ ├── run/ new/ programy + dokładny wynik (.out) i wejście (.in) +│ ├── fail/ new/fail/ programy, które muszą się nie udać, z oczekiwanym błędem w 1. linijce │ ├── run.sh uruchamia testy (MEMCHECK=1 sprawdza też pamięć valgrindem) -│ └── boot.sh buduje kompilator samohostujący nim samym i porównuje +│ ├── cross.sh każdy test zbudowany na Windows / ARM64 i uruchomiony w Wine / QEMU +│ └── lsp_test.py serwer języka, obsługiwany jak przez edytor ├── editors/ rozszerzenie VS Code (vscode/), podświetlanie i konfiguracja LSP dla Kate (kate/) ├── docs/ ta dokumentacja (en, pl), łącznie ze ściągą -├── shell.nix środowisko deweloperskie Nix -└── CMakeLists.txt +└── shell.nix środowisko deweloperskie Nix ``` ```sh -tests/run.sh # → 74 passed, 0 failed +tests/run.sh # programy, odmowy, buildy z -g, biblioteka współdzielona, serwer języka MEMCHECK=1 tests/run.sh # to samo pod valgrindem: bez wycieków i złych dostępów do pamięci -tests/boot.sh # sprawdzenie samohostowania (wymaga clanga) tests/cross.sh windows # każdy test zbudowany na Windowsa i uruchomiony w Wine tests/cross.sh arm64 # każdy test zbudowany na Linuksa ARM64 i uruchomiony w QEMU -python3 tests/lsp_test.py # serwer języka ``` --- diff --git a/editors/kate/finch.xml b/editors/kate/finch.xml index 9de46e1..5651fad 100644 --- a/editors/kate/finch.xml +++ b/editors/kate/finch.xml @@ -11,6 +11,8 @@ fn struct + enum + export if @@ -24,6 +26,7 @@ defer or try + match import diff --git a/editors/vscode/snippets/finch.json b/editors/vscode/snippets/finch.json index 363076e..9457fef 100644 --- a/editors/vscode/snippets/finch.json +++ b/editors/vscode/snippets/finch.json @@ -156,5 +156,43 @@ "}" ], "description": "Every key and value of a map (or index and element of an array)" + }, + "enum": { + "prefix": "enum", + "body": [ + "enum ${1:Name} {", + "\t${2:First},", + "\t${3:Second}", + "}" + ], + "description": "An enum: a type with a few named values" + }, + "match": { + "prefix": "match", + "body": [ + "match ${1:value} {", + "\t${2:pattern} -> $0", + "\telse -> ", + "}" + ], + "description": "match: pick what to do from a value" + }, + "generic function": { + "prefix": "fng", + "body": [ + "fn ${1:name}[${2:T}](${3:T x}) -> ${2:T} {", + "\t$0", + "}" + ], + "description": "A function that works for any type" + }, + "generic struct": { + "prefix": "structg", + "body": [ + "struct ${1:Name}[${2:T}] {", + "\t$0", + "}" + ], + "description": "A struct that holds any type" } } diff --git a/editors/vscode/syntaxes/finch.tmLanguage.json b/editors/vscode/syntaxes/finch.tmLanguage.json index 3246326..d377758 100644 --- a/editors/vscode/syntaxes/finch.tmLanguage.json +++ b/editors/vscode/syntaxes/finch.tmLanguage.json @@ -74,7 +74,7 @@ ] }, "struct": { - "match": "\\b(struct)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "match": "\\b(struct|enum)\\s+([A-Za-z_][A-Za-z0-9_]*)", "captures": { "1": { "name": "storage.type.struct.finch" @@ -117,7 +117,7 @@ }, { "name": "keyword.control.finch", - "match": "\\b(if|else|while|for|in|break|continue|return|defer|or|try)\\b" + "match": "\\b(if|else|while|for|in|break|continue|return|defer|or|try|match)\\b" }, { "name": "storage.type.function.finch", @@ -125,7 +125,11 @@ }, { "name": "storage.type.struct.finch", - "match": "\\bstruct\\b" + "match": "\\b(struct|enum)\\b" + }, + { + "name": "storage.modifier.finch", + "match": "\\bexport\\b" }, { "name": "constant.language.finch", diff --git a/src/main.fch b/src/main.fch index 9c15d2b..95b8b71 100644 --- a/src/main.fch +++ b/src/main.fch @@ -216,7 +216,7 @@ fn main([]str args) -> int { } else if tg.darwin { loader.os = "macos" } - for cand in [dirOf(args[0]) + "/../std", dirOf(args[0]) + "/std", "std"] { + for cand in [dirOf(args[0]) + "/../std", dirOf(args[0]) + "/std", dirOf(args[0]) + "/../share/finch/std", "std"] { if loader.std.len == 0 && file_exists(cand + "/path.fch") { loader.std = cand } @@ -276,6 +276,9 @@ fn main([]str args) -> int { if !file_exists(rt) { rt = dirOf(args[0]) + "/runtime/finch_rt.c" } + if !file_exists(rt) { + rt = dirOf(args[0]) + "/../share/finch/runtime/finch_rt.c" + } if !file_exists(rt) && file_exists("runtime/finch_rt.c") { rt = "runtime/finch_rt.c" }